13
看起来我的interval
从未被触发。
我有一个指令,其中包含$interval
,我想测试它。我已经删除了所有指令相关的代码,并在其反而增加控制这片:
window.called = 0;
window.interval = $interval(function() {
window.called++;
console.log('interval ' + window.called); // 4
}, 10);
console.log('initialized'); // 1
测试看起来是这样的:
describe('myDirective', function() {
beforeEach(module('myModule'));
beforeEach(function($compile, $rootScope) {
/* ... compile element in its own scope ... */
});
it('should run the interval', function() {
console.log(window.interval); // 2
waitsFor(function() {
console.log('tick'); // 3
return false;
}, 1000);
});
});
这是一个愚蠢的测试。出于调试目的,waitsFor
方法实际上始终返回false。但这是我在控制台上看到的所有内容:
initialized // 1
Object: {then: ..} // 2
tick // 3
tick // 3
tick // 3
tick // 3
..
并最终测试失败。我从来没有在日志中看到一个单独的interval
。我的代码一般有什么问题,或者Jasmine/PhantomJS有什么特别的东西,我错过了?
我想补充一点,如果我取代'$间隔()'和'的setInterval()',它按预期工作,所以这个问题是特别是'$ interval()'。 – stackular