Подтвердить что ты не робот

Unittesting в TypeScript

Я знаю, TypeScript - один день. Но мне любопытно, есть ли здесь какая-то структура unit test или способ написания и запуска модульных тестов для TypeScript?

TypeScript может быть скомпилирован в JavaScript, и я могу написать тест для этого JavaScript, но это не то, что я хочу.

4b9b3361

Ответ 1

TypeScript не является языком выполнения. Чтобы выполнить ваш код TypeScript, вам сначала нужно скомпилировать его на JavaScript; это также относится к тестированию. Кроме того, ваши тесты могут быть в TypeScript, скомпилировать как в JavaScript, так и использовать вашу любимую тестовую среду для выполнения тестов.

Ответ 2

Вы можете написать модульные тесты в TypeScript или JavaScript, используя любую из существующих инфраструктур тестирования модулей JavaScript.

Очень скоро я представляю, что существующие фреймворки получат файлы определения окружающей среды TypeScript (обновление - они имеют: http://definitelytyped.org/), которые сделают их статически напечатаны до TypeScript. Тем временем вам может потребоваться прочитать информацию об объявлении об окружающей среде и добавить несколько своих собственных в начале ваших тестов.

В качестве альтернативы вы можете использовать tsUnit TypeScript Unit Testing Framework, которая представляет собой единую тестовую платформу, написанную в TypeScript, - поэтому она воспроизводит nice с TypeScript (и может использоваться и в JavaScript).

Ответ 3

Кажется, есть еще один тестовый runner/framework, называемый Intern. https://theintern.github.io/

Вот статья, объясняющая, как использовать ее в сочетании с TypeScript: https://www.sitepen.com/blog/2015/03/24/testing-typescript-with-intern/

Выглядит довольно многообещающе, когда вы используете TypeScript, и вы ищете установку модульного тестирования, которая поддерживает исходные карты.

Пример теста:

import registerSuite = require('intern!object');
import assert = require('intern/chai!assert');
// Assume that we now have a version of our model in TypeScript:
import SimpleTodoModel = require('todo/model/SimpleTodoModel');

registerSuite({
    name: 'SimpleTodoModel',
    // Assume we have a promises interface defined
    'default data'() {
        var emptyModel = new SimpleTodoModel(),
            id:string = emptyModel.get('id'),
            length:number = emptyModel.get('todos').length,
            incomplete:number = emptyModel.get('incomplete'),
            complete:number = emptyModel.get('complete');
        assert.strictEqual(id, 'todos-dojo',
                    'Id should default to "todos-dojo"');
        assert.strictEqual(length, 0,
                    'Todos array should default to an empty array.');
        assert.strictEqual(incomplete, 0,
                    'Incomplete count should default to 0.');
        assert.strictEqual(complete, 0,
                    'Incomplete count should default to 0.');
    }
});