Ниже я использую следующий код для сброса $broadcast
после каждого тестового примера, но, похоже, он $rootScope.$broadcast.reset();
не работает должным образом, так как тестовый рев должен возвращать 1, но она возвращает 6.Сбросить трансляцию() после каждого тестового примера при использовании andCallThrough()
Кажется, что причиной этого является andCallThrough()
, так как прежде, чем я использовал его без andCallThrough()
функции, но через какое-то реорганизовать он дал мне ошибку, что TypeError: Cannot read property 'defaultPrevented' of undefined
, так что я должен был использовать, чтобы предотвратить эту ошибку.
Вопрос в том, как я могу сбросить broadcast
при использовании andCallThrough
или есть еще один более точный подход?
beforeEach(function() {
spyOn($http, 'post');
spyOn($rootScope, '$broadcast').andCallThrough();
});
afterEach(function() {
$http.post.reset();
$rootScope.$broadcast.reset();
});
it('should make a POST request to API endpoint', function() {
$http.post.andCallThrough();
var response = { id: '123', role: 'employee', email: '[email protected]', username: 'someUsername' };
$httpBackend.expectPOST(apiUrl + 'login').respond(response);
service.login();
$httpBackend.flush();
$timeout.flush();
expect($rootScope.$broadcast.callCount).toBe(1);
expect($rootScope.$broadcast).toHaveBeenCalledWith(AUTH_EVENTS.loginSuccess, response);
});
Если вызов «ожидать» тестирования 'callCount' переносится в первую строку теста, что означает' callCount' равно тогда? Интересно, что что-то еще в тесте вызывает '$ broadcast'. –