Ich habe eine Methode in einem Dienst, der Unterstrich Entprellen verwendet.Testen einer entprellten Funktion in Angular mit Jasmin ruft nie die Funktion
Innerhalb dieser Methode ist ein Aufruf einer Methode auf einem anderen Dienst. Ich versuche zu testen, dass der andere Dienst aufgerufen wird.
In meiner Versuche, die entprellten Methode zu testen, die Methode der verschiedenen Dienste wird nie und Jasmin irgendwie genannt: ‚Expected Spion aMethod genannt worden zu sein‘
Ich weiß für eine Tatsache, dass es aufgerufen wird (es meldet sich an die Konsole in Chrom), es heißt nur, nachdem die Erwartung bereits fehlgeschlagen ist.
So ... (vorzugsweise) ohne Zugabe von Sinon oder einem anderen Abhängigkeit und mit
Bonuspunkten * zu einer Lösung gegeben muss nicht die _.debounce in einen $ timeout drehen ...
Wie machen?
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;
}]);
Tests:
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();
});
});
Warum die Winkel Testing Götter haben mich verlassen?
* Ich weiß nicht, wie man auf stackoverflow tatsächlich Bonuspunkte gibt, aber wenn es möglich ist, werde ich es tun.
Nein. Funktioniert immer noch nicht. In beiden Fällen wird herp.aMethod genannt, aber beide werden nicht vor der Erwartung aufgerufen. –
Ich wünschte ich hätte Chai wie versprochen. ein "irgendwann" würde das beheben. –
Setzen Sie einen Breakpoint innerhalb der anonymen Funktion innerhalb des Callfake und überprüfen Sie den Stack, um zu sehen, woher er aufgerufen wird. – Wawy