Angularjs 角度控制器中$q.all的测试输出
我的控制器执行如下操作(请注意,为了简单起见,我没有显示所有依赖项): 在这种情况下,我很难测试是否调用了fn3()。我也无法解析fn1()和fn2(),以便测试fn3()Angularjs 角度控制器中$q.all的测试输出,angularjs,jasmine,Angularjs,Jasmine,我的控制器执行如下操作(请注意,为了简单起见,我没有显示所有依赖项): 在这种情况下,我很难测试是否调用了fn3()。我也无法解析fn1()和fn2(),以便测试fn3() 任何提示都将不胜感激。最终找到了解决方案。。对于感兴趣的人,请查看此plnkr: 您应该使用$httpBackend来模拟服务器不要认为$httpBackend在这里适用。。 .controller('demo',function(){ fn1(){ var defereed = $q.d
任何提示都将不胜感激。最终找到了解决方案。。对于感兴趣的人,请查看此plnkr:
您应该使用$httpBackend来模拟服务器不要认为$httpBackend在这里适用。。
.controller('demo',function(){
fn1(){
var defereed = $q.defer;
/* fetch data from server and once the data is fetched perform a resolve */
return deferred.promise;
}
fn2(){
var defereed = $q.defer;
/* fetch data from server and once the data is fetched perform a resolve*/
return deferred.promise;
}
fun3() { /*makes some server side calls and updates the view*/}
$q.all([fn1(),fn2()] .then(function(result){
if (result[0]) { fn3();}
});
}
describe('Testing: MainCtrl', function() {
var $scope = null;
var ctrl = null;
var mockInitService;
var defer1,defer2;
var $q;
beforeEach(module('plunker'));
beforeEach(inject(function($rootScope, $controller,$q) {
$scope = $rootScope.$new();
$q = $q;
mockInitService = {
fn1: function(){},
fn2: function(){},
fn3: function(){}
};
defer1 = $q.defer();
defer2 = $q.defer();
spyOn(mockInitService,'fn1').and.returnValue(defer1.promise);
spyOn(mockInitService,'fn2').and.returnValue(defer2.promise);
spyOn(mockInitService,'fn3');
createController = function() {
return $controller('MainCtrl', {
$scope: $scope,
InitService: mockInitService
});
}
}));
it('Should call InitService.fn3', function() {
ctrl = createController();
defer1.resolve();
defer2.resolve();
$scope.$digest();
expect(mockInitService.fn3).toHaveBeenCalled();
});
});