我目前正在为我的一个AngularJS服务编写测试,其中我有异步方法。在我的Jasmine测试中,该方法被正确调用,但我无法检索承诺,我收到以下错误消息: 错误:超时 - 在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时时间内未调用异步回调。
我已经测试过更改超时但它不起作用。在阅读了其他答案后,我已经测试过制作$ digest循环,但它也不起作用。
我已经看过他们模拟调用的解决方案,但我不想模拟任何东西,因为我想验证返回的promise是否正常。
所以我的问题是,有可能吗?
在这里你可以找到我的代码:
function ping(useXML) {
var deffered = $q.defer();
setTimeout(function() {
deffered.resolve(0);
console.log("COUCOU");
}, 500);
return deffered.promise;
}
"use strict";
describe('Ping test', function() {
var webservice;
beforeEach(module('modulename'));
beforeEach(module('othermodulename'));
beforeEach(inject(function( _WebService_) {
webservice = _WebService_;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 3000;
}));
it ('ping not null',function(done) {
var promise = webservice.ping(true);
promise.then(function (result) {
expect(result).toEqual(0);
console.log(result);
done();
});
});
});
我们可以看到调用该方法并且永远不会调用回调。
我不明白为什么不可能在测试中找到承诺,我已经尝试了很多在Google上找到的解决方案,甚至在SO上也是如此。 所以,如果你能帮助我,请提前感谢你的时间。如果我忘了什么告诉我,为了让我完整。