Ich bin ziemlich neu in Javascript und habe gerade AngularJS gelernt, aber ich habe die meisten meiner Testfälle mit einigen tollen Beispielen, die ich gefunden habe, umgesetzt. Leider kann ich nichts finden, was mir helfen könnte, meinen aktuellen Fall zu testen.
Ich teste einen Controller mit einem verspotteten Service, dessen Methode ein Versprechen zurückgibt. Ich möchte, dass der verspottete Dienst einen Fehler zurückgibt, um den Block ".catch" in der Controller-Methode auszuführen. Ich kann sagen, dass es nicht auf verschiedene Arten korrekt aufgerufen wird:
Der zu testende Controller muss speziell den '.catch' in $ scope.login:
testenlogin.js
%Vor%Der Service und die Methode, die ich versuchen möchte:
Auth.login
%Vor%Und schließlich meine Testdatei. Der lustige Teil ist, dass alle Tests vorbei sind, aber das "erwarten" im letzten Test kann zu so ziemlich alles geändert werden und es geht noch weiter. Die ersten zwei Tests scheinen wie erwartet zu laufen, aber der letzte Test ist, wo ich versuche, den catch-Block auszuführen, indem ich einen Fehler von dem Pseudo-Auth-Dienst erstelle:
login.unit.js
%Vor%Ich entschuldige mich dafür, so viel Code gepostet zu haben, aber ich wollte so viel Kontext wie möglich bereitstellen. Ich schätze wirklich jeden, der mir helfen kann, während ich mich im Unit-Testkurs erfahre. Danke !!!
** UPDATE **
Ich konnte mein Problem mit etwas Hilfe von unten lösen und einige syntaktische Fehler entdecken. Folgendes wurde behoben:
beforeEach
beim letzten Test wurde nicht richtig geschlossen und schloss tatsächlich den letzten Test ein, der dazu führte, dass er nicht korrekt (oder überhaupt) ausgeführt wurde. Aus diesem Grund führte das Ändern der Erwartungsbedingungen zu keinen Fehlern. beforeEach
inject auf: mockAuthService.login.andReturn($q.reject({data: {message: 'Bad Login!'}}));
geändert, indem ich das unten angegebene reject
verwendet habe. beforeEach
korrekt geschlossen habe, bekam ich eine Fehlermeldung, dass $ q nicht definiert war, also musste ich sie zu inject(function($q)
hinzufügen
Nachdem ich diese Probleme behoben hatte, wurde das Versprechen korrekt abgelehnt und der Fehler wurde vom entsprechenden Code im Controller abgefangen.
Tags und Links javascript angularjs unit-testing jasmine promise