当我尝试测试返回 promise 的函数时,我收到以下错误:
"Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
"
我的规范如下:
describe('async promise test', function () {
beforeEach(module('app'));
beforeEach(function () {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 6 * 1000;
})
it('should match the name', function (done) {
inject(function ($rootScope,promiseTest) {
$rootScope.$apply(function(){
var promise =promiseTest.checkPromise();
promise.then(function(data){
console.log(data);
done();
})
})
})
})
});
请检查 plunker 链接以获取完整代码 plunker link
最佳答案
您正在使用 mock
模块,该模块会覆盖 $timeout
,以便测试可重复 ( ref )!
您必须使用$timeout.flush(1000);
(并且$apply()
是多余的):
it('should match the name', function (done) {
inject(function (promiseTest,$timeout) {
var promise =promiseTest.checkPromise();
promise.then(function(data){
console.log(data);
done();
});
$timeout.flush(1000);
});
});
参见 fork 的 plunk:http://plnkr.co/edit/J1EmU7yuCETBd8w9mS1R?p=preview
关于javascript - jasmine 2.0 测试返回 promise 的 angularjs 工厂方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28362074/