angularjs - Testing output of $q.all in angular controller -
angularjs - Testing output of $q.all in angular controller -
my controller below (pls note had not shown dependencies sake of simplicity):
.controller('demo',function(){        fn1(){           var defereed = $q.defer;           /* fetch   info server ,  1 time   info fetched perform resolve */            homecoming deferred.promise;       }       fn2(){         var defereed = $q.defer;           /* fetch   info server ,  1 time   info fetched perform resolve*/                  homecoming deferred.promise;      }       fun3() { /*makes server side calls , updates view*/}       $q.all([fn1(),fn2()] .then(function(result){            if (result[0]) { fn3();}        });      }    under such circumstances have having hard time testing whether fn3() called. not able fn1() , fn2() resolve can test fn3()
any tips appreciated.
finally figuered solution .. interested check plnkr: http://plnkr.co/hkaqdh
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() {        homecoming $controller('mainctrl', {         $scope: $scope,         initservice: mockinitservice       });     }    }));    it('should  phone call initservice.fn3', function() {     ctrl = createcontroller();     defer1.resolve();     defer2.resolve();     $scope.$digest();     expect(mockinitservice.fn3).tohavebeencalled();   });  });        angularjs jasmine 
 
Comments
Post a Comment