在广播后如何测试播放范围?我已经搜索并在stackexchange中找到了几个QA,但没有人回答我的问题。代码正常工作,只是不知道如何测试它。我可以补充说,我是一个新手来测试,特别是茉莉花。
所以,这里是代码:
服务CrappySvc:
update: function() { $rootScope.$broadcast('updatecrappy',Crappy.query()); }
控制器GetCrappyCtrl:
$scope.$on('updatecrappy',function(event,crap) { $scope.crap = crap; });
茉莉花:
beforeEach(inject(function($rootScope,$httpBackend,$controller,Crappy) { rootScope = $rootScope; scope = $rootScope.$new(); Crappy = mockCrappy; ... spyOn(rootScope,'$broadcast'); ... ctrl = $controller('GetCrappyCtrl',{ $scope : scope,Crappy : mockCrappy });
}));
it('$scope.$on should have been triggered',function() { rootScope.$broadcast('updatecrappy',[{id : 2,name : 'crappy'}]); expect(rootScope.$broadcast).toHaveBeenCalledWith('updscenes',name : 'crappy'}]);
});
石
你需要告诉茉莉花让间谍打电话给实际的$ broadcast功能
spyOn($rootScope,'$broadcast').andCallThrough();
如果你不使用和CallThrough(),间谍什么都不做。
编辑
使用Jasmine 2,语法将是
spyOn($rootScope,'$broadcast').and.callThrough();