2016-09-11 5 views
1

Ich schreibe eine Web-App mit nodejs. Ich habe einige Funktionen, die ich separat exportieren und testen kann. Es gibt jedoch eine andere Funktion, die einige der utils-Funktionen aufruft, die ich stubben möchte (unter Verwendung von sinon).
Von dem, was ich bisher gesehen habe, kann ich Methoden nur auf Objekte stubben, also wie soll ich meine Dienstprogramme entwerfen, damit ich sie alle testen kann?Stub Funktionsaufrufe innerhalb einer Funktion

function util1() { 
    ... 
} 

function util2() { 
    ... 
} 

function util3() { 
    ... 
    util1(); 
    ... 
    util2(); 
} 

export { 
    util1, 
    util2, 
    util3 
} 

Innen util3 Ich möchte (oder Stub), die Anrufe für util1 und util2 verspotten.

+0

Können Sie etwas mehr auf die Frage hinzufügen, so klar seine mehr wickeln ist? Ich kann noch keinen Anwendungsfall sehen. – Sergio

Antwort

0

Sie könnten util1 und util2 in ein separates Modul einfügen und dann eine Lösung oder ein vorhandenes Modul wie mock-requirehttps://github.com/boblauer/mock-require verwenden.

Aber vielleicht ist die einfachste Lösung tatsächlich, Ihr Design zu ändern, um Objekte zu verwenden. Dann könnten Sie Ihr Objekt mit Stubs erstellen und es mit einer util3-Methode in ein Objekt einfügen.

0

Eine einfache Möglichkeit wäre:

function util3() { 
    ... 
    moddule.exports.util1(); 
    ... 
    module.exports.util2(); 
} 

Der zweite Weg, alles in einer Karte

var self = module.exports = { 
    util3 : function() { 
     self.util2(); 
    }, 
    util2 : function() { }, 
..} 
Verwandte Themen