Test return-Wert ein Spion
Ich bin der Entwicklung eines Ionischen app. Die calling
Funktion ermöglicht dem Benutzer, die Nummer anzurufen, die in factory.call
.
factory.call = '345-678-9087';
factory.calling = function(){
return $window.location.href = 'tel:' + factory.call;
};
Dies ist die Jasmin-test für die oben genannten,
it('calling method', function(){
spyOn(factory, 'calling');
factory.calling();
expect(typeof(windowMock.location.href)).toEqual('string');
});
Den oben genannten test-geht nur in Ordnung, aber es testet nicht den genauen Wert, der factory.calling()
gibt. Ich habe Folgendes versucht, ohne Glück.
1)
it('calling method', function(){
var emergency = spyOn(factory, 'calling');
factory.calling();
expect(emergency).toEqual("'tel:' + factory.call");
});
2) spyOn(factory, "calling").andCallThrough().
3) spyOn(factory, "calling").andReturn("'tel:' + factory.call").
InformationsquelleAutor Aaron | 2016-05-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst, Ihre Fabrik ist nicht wieder alles:
Aufruf von $Fenster.Lage.href, die eine Zuordnung nicht etwas zurückzugeben. Mir scheint, dass dieser Aufruf nicht da sein sollte, und Ihr Verfahren werden soll:
Doing es auf diese Weise, Sie haben einen Wert zurück. Auch sind Sie nicht das speichern der Wert, der zurückgegeben wird, überall, wo man es testen kann. Im Allgemeinen verwenden Sie ein Spion zu überprüfen, um zu sehen, ob die Methode aufgerufen wurde, wie diese:
Überprüfen, was die Methode zurückgibt, können Sie nennen es innerhalb der
expect
block wie diesem:Oder Sie rufen es via einer anonymen Funktion wie diese:
Oder rufen Sie es zuerst und dann überprüfen Sie den Wert, es gibt wie dieses:
Könnte ich auch empfehlen, die Sie testen, mit festen Daten, die Sie uns da ein test dieser Art, sollten Sie nicht auf eine Datenbank. Auch, sollten Sie halten immer zu OAPT (wie Sie getan haben.)
factory.calling
, es gibt mir eine Fehlermeldung -Expected undefined to equal 'tel: 345-678-9087'.
Sorry, ich schaue nicht auf Ihre Fabrik in der Nähe genug. Sollten Sie es betrachten. Ist es nicht etwas zurückzugeben. Sie sind eine Methode aufrufen, die nichts zurück ($Fenster.Lage."href") und der Rückkehr, Rückgabe-Wert (daher
undefined
). Scheint, dass der Aufruf von $Fenster.Lage.href sollten nicht da sein, aber ich bin nicht vertraut mit der app.Ich versuchte es so, wie Sie vorgeschlagen, es gibt mir den gleichen Fehler -
Expected undefined to equal 'tel: 345-678-9087'.
Aktualisieren Sie Ihren code in der Frage, bitte, damit wir die änderungen sehen zu können.
InformationsquelleAutor MBielski
Nicht sicher, dass Sie noch brauchen, aber Anruf-info enthält "returnValue" - Eigenschaft.
Es kann also getestet werden, wie dieser:
erwarten($Umfang.isFilterError.Anrufe.ersten().returnValue).toBeFalsy();
InformationsquelleAutor Maksim Gumerov