Die Funktion Ich möchte testen, ist meist reine JavaScript (Coffeescript), aber enthält eine Zeile, die JQuery-Rufe zu JQuery verspotten:Wie ohne einschließlich JQuery in meiner Spec-Datei auf allen
$("input##{name}").change ->
I don‘ Ich möchte Jquery überhaupt in meine Jasmine-Dateien aufnehmen. Ich würde es gerne komplett ausspionieren, also ist das ein reiner Komponententest.
für diese Funktion My spec beinhaltet folgende Leistungen:
class $
change:() ->
return
spy = spyOn($, 'change')
jedoch Jasmin mir diesen Fehler geben:
Error: change() method does not exist
Wie kann ich $('input##{name}').change ->
vollständig in Jasmin verspotten ohne JQuery sind in der Spezifikationsdatei?
Danke.
UPDATE
Aktualisierung hier, wie Sie nicht richtig Kommentare formatieren.
unten durch die Antworten inspiriert, sieht der Inhalt meines it
Block nun wie folgt aus:
window.$ = (selector) ->
change: (callback) ->
spy = spyOn(window.$, "change")
...
expect(spy).toHaveBeenCalledTimes(9);
Aber ich bin immer:
Error: change() method does not exist
Verwenden Sie Jasmin im Browser oder von der Befehlszeile? –
Beide. Meine Funktionen, die JQuery nicht berühren, sind perfekt spezifiziert, einschließlich einer Funktion, in der ich 'spyOn (history, 'replaceState')' '. Sobald ich jedoch versuche, Funktionen zu spezifizieren, die JQuery aufrufen, indem ich JQuery verspottete, fällt alles auseinander. –
Wenn Sie dies im Browser tun, dann empfehle ich @ fracz 'Antwort zu verwenden, aber setzen Sie die Mock-Funktion in ein Inline-Skript oben, wo alle Jasmin-Sachen im html '-Fenster enthalten sind. $ = Function() {return {change: Funktion() {}}; }; '. Dann können Sie es ausspionieren, um sicherzustellen, dass es angerufen wird. Nicht die sauberste Lösung, aber sollte funktionieren und viel weniger hässlich als alle Jquery für Unit-Tests enthalten. –