Wir sind gerade zu Mokka, Chai und Sinon für unsere Testbibliotheken umgezogen und kommen aus Jasmin Ich bin ein wenig verwirrt, wie man Versprechungen testet.
Ich habe eine Form der Funktion einreichen, das einen Dienst und auf Rückrufe navigiert den Benutzer in dem richtigen Zustand:
submit(event, theForm){
event.preventDefault();
if(theForm.$valid){
this.AuthenticationService.authenticateUser({
email: this.email,
password: this.password
}).then((result) => {
this.$state.go('dashboard.home')
});
}
}
haben einen Teil des Weges dorthin mit dem folgenden Test bekommen:
it('should submit the login credentials if valid', function(){
var dfd = q.defer(),
promise = dfd.promise;
controller.email = '[email protected]';
controller.password = 'Password123';
sinon.stub(service, 'authenticateUser').returns(promise);
sinon.spy(state, 'go');
sinon.spy(controller, 'submit');
controller.submit(event, theForm);
dfd.resolve();
expect(controller.submit).to.have.been.called;
expect(controller.submit).to.have.been.calledWith(event, theForm);
expect(event.preventDefault).to.have.been.called;
expect(service.authenticateUser).to.have.been.called;
expect(service.authenticateUser).to.have.been.calledWith({
email: controller.email,
password: controller.password
});
expect(state.go).to.have.been.called;
expect(state.go).to.have.been.calledWith('dashboard.home');
});
Aber die Behauptung, dass state.go
aufgerufen wird, wird nicht bestanden. Was ändere ich an meinem Test, damit er bestanden wird?
Hey @ RyanP13 hast du eine Lösung für das obige Problem gefunden? Ich stehe auch vor dem gleichen Problem. Wenn versucht, Code "authenticateUser" Versprechen zu testen .. –