Javascript: Mocking Constructor mit Sinon
Ich bin ziehen meine Haare aus versuchen, um herauszufinden, wie mock ein Konstruktor mit sinon. Ich habe eine Funktion, erstellen Sie mehrere widgets durch Aufruf eines Konstruktors, der nimmt ein paar Argumente. Ich möchte, um zu überprüfen, dass der Konstruktor aufgerufen wird, die richtige Anzahl von Zeiten mit den richtigen Parametern, aber ich will nicht, um tatsächlich bauen die widgets. Die folgenden links scheinbar erklären, eine einfache Möglichkeit, die Verspottung der Konstruktor, doch es funktioniert nicht für mich:
Spionage auf einen Konstruktor mit Jasmin
http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html
Wenn ich den folgenden Aufruf stub-Konstruktor:
sinon.stub(window, "MyWidget");
Bekomme ich die folgende Fehlermeldung:
Uncaught TypeError: Attempted to wrap undefined property MyWidget as function
Beim Debuggen in Chrome sehe ich MyWidget zeigt sich in dem Lokalen Abschnitt der Scope-Variablen, aber es ist nicht MyWidget Eigenschaft von window.
Jegliche Hilfe würde sehr geschätzt werden.
InformationsquelleAutor der Frage sevenstripe | 2013-01-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchte ich eine Lösung für dieses, weil mein code war der Aufruf des new-operators. Ich wollte mock-Objekt, dass das neue call erstellt.
Dann habe ich rewire zu injizieren und es in den code, dass ich die Prüfung
InformationsquelleAutor der Antwort starmer
Aus der offiziellen Website von sinonjs:
diese besagt lediglich, dass die Funktion, für die Sie erstellen möchten, muss die stub-Mitglied sein, die Objekt Objekt.
Dinge klarzustellen; Sie rufen
Den MyWidget-Funktion muss im global-scope (seit Sie übergeben Fenster als parameter). Allerdings, wie du schon sagtest, ist diese Funktion in einem lokalen Bereich (vermutlich definiert ein Objekt-literal oder ein namespace).
In javascript kann jeder haben Zugang zu den globalen scope, aber nicht die andere Weise herum.
Prüfen, wo Sie erklären, die MyWidget-Funktion auf und übergibt container-Objekt als ersten parameter, um sinon.stub()
InformationsquelleAutor der Antwort ppoliani
Fand gerade diese in der Dokumentation.
InformationsquelleAutor der Antwort AXMIM
Ich verwendet, Spott, Mock-Konstruktor/Funktion ohne Probleme.
Sollten Sie sich bewerben können, ein Spion Sinon einfach wie im Beispiel oben tut.
Stellen Sie sicher, zu deaktivieren oder zurückzusetzen Spott nach dem test(s)!
InformationsquelleAutor der Antwort user3331119
Lief ich in diesen Fehler, indem Sie fälschlicherweise die Eingabe
sinon.stub.throws(expectedErr)
eher alssinon.stub().throws(expectedErr)
. Ich habe ähnliche Fehler vor und nicht auf, diese Nachricht vor, es warf mich.InformationsquelleAutor der Antwort user1978019
Mit Sinon 4.4.2, ich war in der Lage zu verspotten, eine Instanz-Methode wie diese:
Brauchte ich ein mock für eine Zeile, die so ähnlich aussah:
Eine ähnliche Lösung hier:
Stubbing eine Klasse mit Methode Sinon.js
InformationsquelleAutor der Antwort theUtherSide
War ich in der Lage zu bekommen StubModule zu arbeiten, nach ein paar Verbesserungen, insbesondere die Weitergabe, in async:false als Teil der config, wenn Sie erfordern in der gekürzte Modul.
Großes Lob an Herrn Davis für die Umsetzung, die zusammen
InformationsquelleAutor der Antwort sevenstripe