Karma-Jasmine异步测试返回错误:超时 - 在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时内未调用异步回调

时间:2018-06-12 09:40:00

标签: angularjs jasmine phantomjs karma-jasmine angular-promise

我目前正在为我的一个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();

        });
    });
});

这是我的控制台显示的内容: enter image description here

我们可以看到调用该方法并且永远不会调用回调。

我不明白为什么不可能在测试中找到承诺,我已经尝试了很多在Google上找到的解决方案,甚至在SO上也是如此。 所以,如果你能帮助我,请提前感谢你的时间。如果我忘了什么告诉我,为了让我完整。

0 个答案:

没有答案