angularjs - Promise not resolving in angular jasmine unit test -
angularjs - Promise not resolving in angular jasmine unit test -
my service looks this:
app.service('foo',function($q){ this.fn3 = function(){ var deferred = $q.defer(); homecoming deferred.promise; } }); my spec document below:
describe('testing: mainctrl', function() { var $scope = null; var ctrl = null; var mockfoo; var deferred; var $q; var info = {name: 'test'}; var createcontroller; beforeeach(module('plunker')); beforeeach(inject(function($rootscope, $controller,_$q_) { $scope = $rootscope.$new(); $q = _$q_; mockfoo = { fn3: function(){ } }; deferred = $q.defer(); spyon(mockfoo,'fn3').and.returnvalue(deferred.promise); createcontroller = function() { homecoming $controller('mainctrl', { $scope: $scope, foo: mockfoo }); }; })); it('should phone call fn3()', function(){ ctrl = createcontroller(); deferred.resolve(data); $scope.$digest(); expect(mockfoo.fn3).tohavebeencalled(); expect($scope.temp).tobe(data); }); }); i not quiet sure why spec failing. resolving promise , calling $digest means $scope.temp should value.
i have plnkr here: http://plnkr.co/edit/uzwqtt
any suggestions ?
you have catch resolved value accessing value in then function:
var resolvedvalue; $scope.temp.then(function(value) { resolvedvalue = value; }); expect(resolvedvalue).toequal(data); see plunker.
angularjs jasmine
Comments
Post a Comment