Mam metodę w usłudze korzystającej z debounowania podkreślnika.Testowanie funkcji wyodrębnionej w Angular z Jasmine nigdy nie wywołuje funkcji
Wewnątrz tej metody znajduje się wywołanie metody w innej usłudze. Próbuję przetestować, że wywoływana jest inna usługa.
W moich prób w celu przetestowania debounced, metoda różnych usług nigdy nie jest wywoływana i jaśmin nie powiedzie się z: «Oczekiwana aMethod szpiegowskiej zostały nazwie»
Wiem na pewno, że jest on wywoływany (loguje się do konsoli w chrome), po prostu nazywa się AFTER, a oczekiwanie już się nie powiodło.
Więc ... (najlepiej) bez dodawania sinon lub innego uzależnienia oraz z
punktów bonusowych * udzielonych rozwiązanie nie musi obrócić _.debounce do $ limit czasu ...
Jak zrobić?
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;
}]);
testy:
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();
});
});
Dlaczego bogowie kątowej Testowanie mnie opuścił?
* Nie wiem, jak podać faktyczne punkty bonusowe na stackoverflow, ale jeśli to możliwe, zrobię to.
Nie. Wciąż nie działa. W obu naszych przypadkach nazywany jest herp.aMethod, ale żaden z nich nie jest wywoływany przed oczekiwaniem. –
Chciałbym mieć Chai zgodnie z obietnicą. "ostatecznie" to naprawi. –
umieść punkt przerwania wewnątrz anonimowej funkcji wewnątrz callfake i sprawdź stos, aby zobaczyć skąd jest wywoływany. – Wawy