Sinon: Stubbing-Methode in derselben Datei funktioniert nicht

Erstellt am 5. Okt. 2016  ·  3Kommentare  ·  Quelle: sinonjs/sinon

Ich versuche, eine Funktion in einer Datei zu testen, während ich eine andere Funktion in der GLEICHEN Datei stub, aber der Mock wird nicht angewendet und die eigentliche Methode wird aufgerufen. Hier ist ein Beispiel:

// file: 'foo.js'

export function a() {
   // .....
}

export function b() { 
   let stuff = a(); // call a
   // ...do stuff
}

Und mein Test:

import * as actions from 'foo';

const aStub = sinon.stub(actions, 'a').returns('mocked return');
actions.b(); // b() is executed, which calls a() instead of the expected aStub()

Alle 3 Kommentare

Überlegen Sie, wie dies im Standard-ES5 aussehen würde. Jede Funktion wird mit einem bestimmten Namen auf das Exportobjekt exportiert, ist aber auch intern über den Funktionsnamen referenzierbar. Wir sprechen von zwei verschiedenen Referenzen. Beim Stubbing ändern Sie die externe Referenz. Die interne Referenz bleibt gleich. Sie können es nicht ändern, es sei denn, Sie erstellen einen expliziten Abhängigkeitsinjektor (wie eine Setter-Funktion für den internen Gebrauch). Dies ist kein Fehler, sondern eine Funktion von JavaScript.

Gibt es eine Problemumgehung dafür??? Es ist durchaus üblich, beim Testen einer nodejs-Datei auf diese Art von Problem zu stoßen.

Dies wird in unserer Dokumentation im Abschnitt "How to" behandelt:
http://sinonjs.org/how-to/link-seams-commonjs/

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen