错误:超时超过 2000 毫秒.带有承诺的单元测试
Error: timeout of 2000ms exceeded. Unit test with promises
我的单元测试向NET API发出http请求并使用kriskowal q library。当我调用assert
回调then
断言失败时,我看到Error: timeout of 2000ms exceeded
而不是AssertionError
。我写了一个例子来说明这种情况:
var assert = require('assert')
, Q = require('q');
it('promise', function(cb){
var deferred = Q.defer();
deferred.promise.then(function(){
assert(false);
cb();
});
deferred.resolve();
});
我无法理解这种行为。 使用 setTimeout/setImmediate
对异步行为进行建模显示正常AssertionError
。
Q 不提供未经处理的拒绝跟踪,您需要明确.done
承诺来表示链已结束。您在测试中收到一个禁止显示的错误:
it('promise', function(cb){
var deferred = Q.defer();
deferred.promise.then(function(){
assert(false);
cb();
}).done(); // NOTE THE DONE
deferred.resolve();
});
但是,Mocha 提供了更好的 promise 语法,您可以简单地返回一个 promise 并将拒绝转换为测试失败:
it('promise', function(cb){
return new Q.Promise(function(resolve){ resolve(); }). // use the new syntax
then(function(){
assert(false);
cb();
});// no done needed because of the `return`
});
相关文章:
- 当我在异步操作Redux上开始单元测试时,没有定义错误承诺
- 如何在AngularJS中承诺控制器后进行单元测试
- 如何对生成的承诺链进行单元测试
- 在 angularjs 控制器中对承诺调用进行单元测试时遇到问题
- 茉莉花单元测试模拟一个承诺
- 为什么在单元测试中注入“ng”会改变承诺处理行为
- Angular $q承诺使用摩卡,柴,西农进行单元测试
- 错误:超时超过 2000 毫秒.带有承诺的单元测试
- AngularJs 单元测试 - 模拟承诺不执行“然后”
- jsonp 回调(stripe.js)中延迟承诺的 Karma 单元测试
- 单元测试angularjs$q.all-承诺永远不会完成
- 无法读取属性'spyOn'of null-模拟angularJS单元测试中的承诺
- 单元测试结束承诺链的函数
- 单元测试pg发射器在承诺得到
- 配置javascript单元测试和承诺断言
- 单元测试:测试内部承诺
- 如何在单元测试中通过jasmine spy向angular控制器返回被拒绝/失败的承诺
- 如何对调用另一个返回承诺的函数进行单元测试
- 为什么这个单元测试失败了?(Jasmine/AngularJS的承诺)
- Angular.js承诺在单元测试服务时不解决因果报应问题