我正在尝试对一个包含异步方法的服务进行单元测试,但一直没有成功。
我已经尝试使用 AngularJS 中的 $q 支持来实现 Promises。
任何帮助将不胜感激。
angular.module('myapp', ['myservice']);
angular.module('myservice', []).factory('myservice', function($q) {
var ls = {};
ls.DoIt = function() {
var deferred = $q.defer();
setTimeout(function(){
deferred.resolve(5);
},3000);
return deferred.promise;
}
return ls;
});
describe('services', function () {
beforeEach(module('myservice'));
it("should equal 2", inject(function(myservice) {
myservice.DoIt().then(function(returned) {
expect(returned).toEqual(2);
});
}));
});
DoIt
模拟服务的控制器,并且在该控制器内部,DoIt
处于循环中,因此它被多次调用。如何多次刷新它?难道不能让DoIt
自己刷新吗?我尝试通过在其中包含this来使异步模拟自行刷新,但这似乎不太健壮。 - M.K. SafivalueToVerify
仍然是未定义的? - Lukasz Prus