Ich habe einige Schwierigkeiten, die Ausspionierung von Jasmin zu beinflussen.
Ich möchte überprüfen, ob ein Link auf einen Schieberegler mit einem Jasmin Spion und Jasmin Jquery angeklickt wurde.
Hier ist eine vereinfachte Version:
Ich habe einige Links als Teil einer HTML-Fixture-Datei.
%Vor% Schieber:
%Vor%Spezifikationsdatei:
%Vor%Der Test schlägt fehl. Aber das "Ich wurde geklickt" wurde in der Konsole protokolliert, so dass die Methode aufgerufen wird.
Wenn ich das tue geht der Test durch:
%Vor%Also meine Frage ist im Wesentlichen:
Ich habe gerade die im Kommentar beschriebene Lösung verifiziert. Ihre describe
sollte sein:
Der Punkt ist, dass Sie den Prototyp handleClick
function und vor der Slider
-Erstellung ausspionieren müssen.
Der Grund ist, was Jasmine spyOn
wirklich in dem von Ihnen bereitgestellten Code tut:
erstellt die Slider-Eigenschaft handleClick
(mit dem Spy-Objekt) direkt in der slider
-Instanz. slider.hasOwnProperty('handleClick')
gibt in diesem Fall true
zurück, weißt du ...
Dennoch gibt es handleClick
prototype property, an die Ihr Klickereignis gebunden ist. Das bedeutet, dass das gerade ausgelöste Klickereignis von der Funktion handleClick
des Prototyps gehandhabt wird, während die Eigenschaft handleClick
des Schiebereglerobjekts (Ihr Spion) unberührt bleibt.
Die Antwort ist also, dass der Spion die Tatsache nicht registriert, dass die Methode aufgerufen wurde, weil sie nie aufgerufen wurde: -)
Tags und Links jasmine jasmine-jquery