Жасмин бросает "не могу найти переменную: требуется"
У меня есть проект VS2015 TypeScript, переносимый в ECMA5 с использованием модульной системы CommonJS, и юнит-тесты с Jasmine в том же проекте. Некоторые ссылки на код self
поэтому мне нужно запустить тесты с jasmineBrowser, чтобы иметь среду, похожую на браузер.
Я пытался запустить тесты с jasmineBrowser.server
, но после сообщения "Jasmine server listening" продолжает зависать. Я пытался перейти на jasmineBrowser.headless
используя PhantomJS 2, как указано в документации gulp-jasmine-browser, но затем я получаю эту ошибку:
ReferenceError: Невозможно найти переменную: требуется
Для меня не важно, будут ли тесты выполняться с использованием jasmineBrowser.server
или же jasmineBrowser.headless
, Любое решение работает для меня. Некоторый код вставлен ниже.
Spec файл:
import {MockHub} from "path/to/mockHub";
import {Subject} from "path/to/Subject";
describe("A nice little test", () => {
let mockHub: MockHub;
let subject: Subject;
jasmine.getEnv().updateInterval = 200;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000;
beforeEach(function () {
mockHub = new MockHub();
subject = new Subject();
});
afterEach(function () {
mockHub.dispose();
});
it("should assert that it works", function () {
let result = -1,
done = false;
mockHub.bind(someEvent, () => {
result = subject.getResult();
done = true;
});
runs(function () {
setTimeout(() => mockHub.dispatch(someEvent), 2000);
});
waitsFor(function () {
return done;
});
runs(function () {
expect(result).toEqual(0);
});
});
});
Гулп файл:
var gulp = require('gulp'),
jasmine = require('gulp-jasmine'),
runSequence = require("run-sequence"),
jasmineBrowser = require('gulp-jasmine-browser');
gulp.task("test", function () {
gulp.src([
"tests/**/SubjectSpec.js"
])
.pipe(jasmineBrowser.specRunner({ console: true }))
.pipe(jasmineBrowser.headless());
// .pipe(jasmineBrowser.specRunner({ console: true }))
// .pipe(jasmineBrowser.server({port: 9000}));
});
Файл Subject.js, перенесенный из файла Subject.ts:
import {EventTypes} from "./EventTypes";
class Subject implements ISubject {
let counter = 0;
constructor(private hub: IHub) {
this.hub.bind(EventTypes.all, () => this.counter++);
}
public getResult(): number {
return this.counter;
}
}
export {Subject};