Тестирование ошибочной функции в AngularJS с помощью Jasmine никогда не вызывает функцию

У меня есть метод в сервисе, который использует debounce подчеркивания.

Внутри этого метода есть вызов метода в другом сервисе. Я пытаюсь проверить, что другой сервис называется.

В моих попытках протестировать дебазированный метод метод различных сервисов никогда не вызывался, и jasmine завершается неудачно с:

«Ожидаемый шпион aMetod был вызван».

Я точно знаю, что он называется (он записывает на консоль в Chrome), он просто называется ПОСЛЕ ожидания, что уже сбой.

Итак ... (желательно) без добавления Синона или другой зависимости и с
бонусные баллы *, предоставленные решению, не должны превращать _.debounce в $ timeout ...

Как?

angular.module('derp', [])
.service('herp', function(){ 
   return {
     aMethod: function(){ 
       console.log('called!'); 
       return 'blown'; 
     }
   }; 
 })
 .service('Whoa', ['herp', function(herp){
   function Whoa(){
     var that = this;
     this.mindStatus = 'meh';
     this.getMind = _.debounce(function(){
       that.mindStatus = herp.aMethod();
     }, 300);
   }
   return Whoa;
 }]);
Тесты:
describe('Whoa', function(){
  var $injector, whoa, herp;

  beforeEach(function(){
    module('derp');
    inject(function(_$injector_){
      var Whoa;
      $injector = _$injector_;
      Whoa = $injector.get('Whoa');
      herp = $injector.get('herp');
      whoa = new Whoa();
    });
  });

  beforeEach(function(){
    spyOn(herp, 'aMethod').andCallThrough();
  });

  it('has a method getMind, that calls herp.aMethod', function(){
    whoa.getMind();
    expect(herp.aMethod).toHaveBeenCalled();
  });
});

Почему ангелы-испытатели AngularJS оставили меня?

* Я не знаю, как дать реальные бонусные очки на стеке потока, но если это возможно, я буду.

Ответы на вопрос(2)

Ваш ответ на вопрос