我正在使用包含“原始”Jasmine测试和一些Angular 2组件的Jasmine测试套件。由于包含Angular 2,因此会加载zone.js。这与Jasmine的时钟产生冲突。例如,以下测试将失败并显示错误信息:Error: Jasmine Clock was unable to install over custom global timer functions. Is the clock already installed?
describe('an async test with zone.js present', function() {
beforeEach(function() {
jasmine.clock().install();
});
afterEach(function() {
jasmine.clock().uninstall();
});
it('cannot install jasmine\'s mock clock', function() {
var callback = jasmine.createSpy('setTimeoutCallback')
setTimeout(callback, 55);
jasmine.clock().tick(56);
expect(callback).toHaveBeenCalled();
});
})
这里是上述代码的Plunker。
除了将Angular 2测试与“vanilla”测试分开交付之外,我想知道还有哪些选择。例如,是否可能使用zone来执行Jasmine时钟的工作?例如,在断言之前是否可以使用区域模拟tick或刷新所有已安排的任务?