브로드 캐스트 후 스코프가 채워 졌는지 테스트하려면 어떻게해야합니까? 나는 몇 가지 품질 보증을 stackexchange에서 찾았지만 아무도 내 문제에 답하지 못했습니다. 코드가 제대로 작동하고 테스트하는 방법을 모르겠습니다. 나는 초심자이며, 특히 재스민과 함께 테스트 할 수 있다고 덧붙일 수있다.
서비스 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', [{id : 2, name : 'crappy'}]);
});
스톤
당신은 스파이가 아무것도하지 않는andCallThrough()
를 사용하지 않는 경우 스파이 호출 실제 $ 방송 기능
spyOn($rootScope, '$broadcast').andCallThrough();
수 있도록 재스민 말할 필요
이 역시 도움이됩니다. http://stackoverflow.com/questions/15272414/how-can-i-test-events-in-angular – Ben