Jasmine Spione werden nicht angerufen

8

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:

  1. Teste ich diese Art von Sache auf die falsche Art?
  2. Warum registriert der Spion nicht, dass die Methode aufgerufen wurde?
jamie holliday 26.07.2013, 11:31
quelle

1 Antwort

17

Ich habe gerade die im Kommentar beschriebene Lösung verifiziert. Ihre describe sollte sein:

%Vor%

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:

%Vor%

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: -)

    
zbynour 29.07.2013, 09:42
quelle

Tags und Links