【发布时间】:2014-04-28 13:35:36
【问题描述】:
尝试测试一个基于 Promise 的服务,它执行如下操作:
load : function(){
var deferred = $q.defer();
//Do misc async stuff
deferred.resolve();
return deferred.promise;
}
在 Karma + Jasmine 2.0 中尝试对此进行测试时,我尝试使用它的 done() 回调,但它总是超时并且永远不会解决承诺。
beforeEach(inject(function ($injector) {
service = $injector.get('myService');
$window = $injector.get("$window");
$rootScope = $injector.get('$rootScope');
}));
describe('Call load', function () {
it('resolves its promise', function (done) {
service.load().then(function(){
expect(something).not.toBe(undefined);
done();
});
});
});
在 Jasmines 文档中,这就是我应该如何使用 done() 和异步代码,但问题似乎是承诺永远不会解决
【问题讨论】:
-
$scope.$apply() 应该解决承诺
-
感谢@TimCastelijns。你应该这样回答。
-
谢谢@TimCastlijns,我同意其他人的观点,你应该用解释来回答。单元测试中未解决的 Promise 问题让我困惑了很长时间。
-
添加了一个答案,因为我几乎忽略了这个问题,因为它没有答案并且已经两年多了。
标签: angularjs jasmine karma-runner karma-jasmine