测试伪装延迟承诺解析的示例:
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
});});
自述文件说要做:
return doSomethingAsync().should.eventually.equal("foo");我得到的错误是:
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.发布于 2016-04-07 08:25:09
$timeout服务已经返回一个promise。不需要制造一个。
fakePromise = $timeout(function() {return "foo"}, 100);在本例中,fakePromise被设置为一个promise,在100毫秒后解析为"foo“。
https://stackoverflow.com/questions/36463748
复制相似问题