title: Reset broadcast() after each test case while using andCallThrough()
body: <p>I am using the code bellow to reset <code>$broadcast</code> after each test case, but it seems it <code>$rootScope.$broadcast.reset();</code> doesn't function properly, since the test bellow should return 1, but it returns 6. </p>
  
  <p>Seems that the reason for this is <code>andCallThrough()</code>, since before I used it without <code>andCallThrough()</code> function, but after some refactor it gave me an error that <code>TypeError: Cannot read property 'defaultPrevented' of undefined</code>, so I had to use to prevent that error.</p>
  
  <p>The question is how can i reset the <code>broadcast</code> while using <code>andCallThrough</code> or is there another more precise approach?</p>
  
  <pre><code>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: 'user@email.com', 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);
  });
  </code></pre>