Spionage auf jQuery $('...') Wahlschalter in Jasmin
Wenn es um die Bespitzelung von jQuery-Funktionen (z.B. bind
, click
etc) ist es einfach:
spyOn($.fn, "bind");
Das problem ist, wenn Sie wollen, um Spion auf $('...')
und zurück definierten array-Elemente.
Dinge versucht, nach dem Lesen der anderen ähnliche Antworten auf SO:
spyOn($.fn, "init").andReturn(elements); //works, but breaks stuff that uses jQuery selectors in afterEach(), etc
spyOn($.fn, "merge").andReturn(elements); //merge function doesn't seem to exist in jQuery 1.9.1
spyOn($.fn, "val").andReturn(elements); //function never gets called
So, wie mache ich das? Oder wenn der einzige Weg, um Spion auf init
Funktion wie kann ich "entfernen" spy-aus-Funktion, wenn ich fertig bin, so afterEach()
routing nicht funktioniert.
jQuery version 1.9.1.
PROBLEMUMGEHUNG:
Der einzige Weg, ich könnte es, Arbeit so weit (hässlich):
realDollar = $;
try {
$ = jasmine.createSpy("dollar").andReturn(elements);
//test code and asserts go here
} finally {
$ = realDollar;
}
InformationsquelleAutor parxier | 2014-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Normalerweise ein Spion vorhanden ist für die Lebensdauer der spec. Jedoch, es ist nichts besonderes über die Vernichtung ein Spion. Sie einfach wieder die ursprüngliche Funktion verweisen.
Hier ist eine handliche kleine Helfer-Funktion (mit einem test-Fall), wird bereinigen Sie die Problemumgehung und machen es nutzbar. Rufen Sie die
unspy
Methode in IhrerafterEach
zum wiederherstellen der ursprünglichen Referenz.Als alternative zu den oben genannten (und für alle anderen die dies Lesen), Sie könnte sich ändern, wie Sie nähern uns dem problem. Statt Bespitzelung der
$
Funktion, extrahieren Sie die ursprüngliche Aufruf$
seine eigene Methode, und Spionage auf, dass statt.unspy
Ansatz, und es funktioniert gut.InformationsquelleAutor Eric
Durch Spionage auf die Fenster selbst haben Sie Zugriff auf das Fenster Eigenschaften.
Als Jquery ist eine dieser Sie können leicht spotten Sie es wie unten aus und geben den Wert zurück, den Sie verlangen.
Oder fügen Sie ein callFake mit der Eingabe, wenn es dynamisch sein muss.
Kommentar Bearbeitet zu erklären-code
InformationsquelleAutor Liam Middleton