javascript - jasmine 2.0 测试返回 promise 的 angularjs 工厂方法

标签 javascript angularjs jasmine jasmine-async

当我尝试测试返回 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/

相关文章:

javascript - 用于 promise 的 Angular Jasmine 单元测试

javascript - 如何将参数传递给基于时间的 Google App Script 触发器?

javascript - 嵌套的 JSON,使用 angularjs 根据 Jquery 中的条件删除对象

angularjs - 如何按属性过滤为空数组?

javascript - Jasmine 测试 knockout ObservableArray

angular - Jasmine 中的 TestBed 是什么

javascript - 为什么我的全局变量不被识别?

javascript - 如何使用 JS 停止自动刷新

javascript 和输入,了解何时停止写入

javascript - AngularJS HTML 5 输入范围输出