Wie kann getestet werden, dass eine Funktion nach dem Auslösen eines Ereignisses aufgerufen wurde?

9

Es gibt ein benutzerdefiniertes Ereignis in FooView ..

%Vor%

Die zugehörige FooController bindet einen Handler, der sich um das Ereignis kümmert ...

%Vor%

Um die Ereignisbehandlung zu testen, würde ich den folgenden Test für Jasmine schreiben:

%Vor%

Obwohl der Test fehlschlägt ..

%Vor%

Scheitert der Test, weil das Ereignis länger als erwartet dauert?

    
JJD 19.08.2013, 19:53
quelle

1 Antwort

15

Das Problem besteht darin, dass Sie eine Funktion ausspionieren, nachdem die Funktion an das Ereignis gebunden wurde. Wenn Jasmin einen Spion erstellt, ersetzt er die Funktion, die Sie ausspionieren, durch eine andere Funktion.

Was hier passiert, ist, dass die ursprüngliche Funktion an das Ereignis gebunden ist

%Vor%

Danach wird die ursprüngliche Funktion durch den Spion ersetzt, aber das hat keine Auswirkungen auf die Funktion, die Sie an die Funktion bind übergeben.

Die Lösung dafür besteht darin, FooController.prototype.onSomethingHappened zu erkennen, bevor Sie eine neue Instanz erstellen:

%Vor%     
Andreas Köberle 20.08.2013, 19:22
quelle