Как настроить jasmine для проекта typescript
мне нужно некоторое руководство о том, как настроить модульное тестирование проекта TypeScript с Jasmine.
тестовый файл спецификации выглядит следующим образом:
/// <reference path="../../../typings/tsd.d.ts" />
import {Mediator} from '../../../services/remoting/Mediator';
describe('Mediator', () =>
{
let mediator: Mediator;
beforeEach(() =>
{
mediator = new Mediator();
});
it('blah blah', () =>
{
expect(mediator.TEST).toBeDefined();
});
});
Я использую модуль npm jasmine для запуска тестов. жасмин.json указывает на встроенные файлы спецификаций JS следующим образом:
{
"spec_dir": "build/spec",
"spec_files": [
"**/*.js"
]
}
файл спецификации сборки выглядит следующим образом:
/// <reference path="../../../typings/tsd.d.ts" />
define(["require", "exports", '../../../services/remoting/Mediator'], function (require, exports, Mediator_1) {
describe('factory: Mediator', function () {
var mediator;
beforeEach(function () {
mediator = new Mediator_1.Mediator();
});
it('should have defined all required fields', function () {
expect(mediator.ExecuteQuery).toBeDefined();
});
});
});
//# sourceMappingURL=Mediator.spec.js.map
когда я пытаюсь запустить тесты, Жасмин жалуется на неопределенную функцию "define":
ReferenceError: define is not defined
Я попытался найти на TypeScript + Jasmine, но информации мало (и я не хочу использовать полную VisualStudio). Поэтому я был бы признателен, если кто-то может указать мне в правильном направлении, как установить typescript + jasmine и где моя ошибка.
спасибо заранее.
1 ответов
похоже, что вы компилируете с помощью --module amd
флаг, который предназначен для асинхронных модулей (например, при использовании RequireJS).
Если вы работаете на узле, нужно поставить --module commonjs
. Это приведет к следующему результату:
var mediator_1 = require('../../../services/remoting/Mediator');
(хотя имя переменной может измениться, поскольку оно создает имя на лету для вас при компиляции импорта стиля ES6).