Meine Anwendung verwendet einen Dienst, der ein Versprechen zurückgibt, das normalerweise von einer ganzen Reihe anderer Versprechen abhängig ist. Ich habe dies in separate benannte Funktionen umgestaltet, um das Testen (und die Lesbarkeit) zu vereinfachen. In diesem Fall möchte ich nur testen, dass die RUN-Funktion ihre Aufgabe erfüllt und die anderen Funktionen aufruft.Die Funktion wird aufgerufen, nachdem das Versprechen gelöst wurde, aber Jasmine den Test nicht besteht. Warum?
z.B.
run() {
return myService
.connection
.then(this.namedFunction1)
.then(this.namedFunction2)
.then(this.namedFunction3)
.catch((error) => {
console.log("doh!", error.stack);
});
Wenn ich testen, dass namedFunction1 Jasmine nicht genannt wurde, obwohl dies nicht der Fall ist. Hier ist ein kleines Codebeispiel ich gemacht Dinge einfach zu halten:
getString() {
return Promise.resolve("Heeeelp. Heeeelp!!");
}
printToConsole(string) {
console.log(string); // This works! but Jasmine says nay :(
}
myFunction() {
this.getString()
.then(this.printToConsole)
.catch((error) => {
console.log("Some error occurred", error);
});
}
... und der Test:
it("should call the printToConsole function", function() {
spyOn(myClass, "printToConsole").and.callThrough(); //added the call through so it would print
myClass.myFunction();
expect(myClass.printToConsole).toHaveBeenCalled();
});
und der Ausgang ...
> Started F[2016-05-16 11:32:31.898] console - Heeeelp. Heeeelp!!
>
>
> Failures: 1) MyClass myFunction should call the printToConsole
> function Message:
> Expected spy printToConsole to have been called. Stack:
> Error: Expected spy printToConsole to have been called.
I‘ Ich habe versucht, die Jasmine asynch done() -Funktion hinzuzufügen, aber das hat nichts getan, und letztendlich löst ich dieses Versprechen sofort im Beispiel auf.
Warum oder wie kann dieser Test fehlschlagen?
Jede Hilfe würde sehr geschätzt werden. Vielen Dank.
Ich habe versucht, zuvor mit der Async-Unterstützung, aber meine Behauptung war nicht in der myClass.myFunction(). Then() -Anweisung. Es macht jetzt mehr Sinn. Danke Kumpel. – spryce