首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何模拟chai-as-promised和karma/angular的延迟?

如何模拟chai-as-promised和karma/angular的延迟?
EN

Stack Overflow用户
提问于 2016-04-07 06:56:08
回答 1查看 331关注 0票数 0

测试伪装延迟承诺解析的示例:

代码语言:javascript
复制
describe('Example', function() {
  var $q;
  var $rootScope;
  var $scope;
  var $timeout;
  var fakePromise;

  beforeEach(inject(function (_$q_, _$rootScope_, _$timeout_) {
    $q = _$q_;
    $rootScope = _$rootScope_;
    $timeout = _$timeout_;
    $scope = $rootScope.$new();

    fakePromise = function (){
      return new Promise(function(resolve, reject){
        $timeout(function(){
          resolve('foo');
        }, 100);
      });
    };
  }));

  afterEach(function () {
    $scope.$apply();
  });

  it('should wait for promise to resolve and have a result', function(){
    return fakePromise().should.eventually.equal('foo'); //taken from chai-as-promised readme
  });

});

自述文件说要做:

代码语言:javascript
复制
return doSomethingAsync().should.eventually.equal("foo");

我得到的错误是:

代码语言:javascript
复制
Chrome 49.0.2623 (Mac OS X 10.11.4) Example should wait for promise to resolve and have a result FAILED
  Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
EN

回答 1

Stack Overflow用户

发布于 2016-04-07 08:25:09

$timeout服务已经返回一个promise。不需要制造一个。

代码语言:javascript
复制
fakePromise = $timeout(function() {return "foo"}, 100);

在本例中,fakePromise被设置为一个promise,在100毫秒后解析为"foo“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36463748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档