Làm cách nào để kiểm tra phạm vi được điền sau khi phát sóng? Tôi đã tìm kiếm và tìm thấy một vài QA ở đây trong stackexchange, nhưng không ai trả lời vấn đề của tôi. Mã đang hoạt động ổn, chỉ không biết cách kiểm tra nó. Tôi có thể thêm rằng tôi là một người mới để thử nghiệm, và đặc biệt là với Jasmine.
Vì vậy, đây là các mã:
Dịch vụ CrappySvc:
update: function() {
$rootScope.$broadcast('updatecrappy', Crappy.query());
}
khiển GetCrappyCtrl:
$scope.$on('updatecrappy', function(event, crap) {
$scope.crap = crap;
});
Jasmine:
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'}]);
});
Đá
Tôi thấy điều này cũng hữu ích: http://stackoverflow.com/questions/15272414/how-can-i-test-events-in-angular – Ben