2016-03-24 29 views
4

Es gibt drei separate Fragen, die dieser ähneln, aber keiner von ihnen ähnelt dem Fall, den ich habe.Stubbing verschachtelte Funktionsaufrufe in Sinon

So habe ich im Grunde eine Funktion, die eine Funktion als Parameter

var myfunc (func_outer) { 
    return func_outer().func_inner(); 
} 

In meiner Unit-Tests Ich möchte in der Lage sein, um eine Stub eines MyFunc2 nimmt. Grundsätzlich muss ich in der Lage sein, einen Stub auszugeben, der ein verschachtelter Stub ist. Ich benutze derzeit diese Art von manuellen Stub, aber ich würde es lieber mit Sinon Stubs tun, wenn es einen Weg gibt.

const func_outer =() => { 
    return { 
     func_inner:() => {return mockResponse;} 
    } 
}; 

Hat jemand jemals diese Situation konfrontiert. Gibt es eine einfache Möglichkeit, dieses Problem zu lösen?

Antwort

1

Von sinon documentation können Sie den Abschnitt kehrt überprüfen

stub.returns (obj);
Der Stub gibt den angegebenen Wert zurück.

können Sie versuchen, die folgenden:

Zuerst sollten Sie sicherstellen, dass Sie Ihre innere Funktion Stummel, und dann den Wert machen zurückkehren Sie wollen.

Dann stub Sie Ihre äußere Funktion und lassen Sie das Objekt mit Ihrer gestauchten inneren Funktion zurückkehren.

func_outerStub = sinon.stub().returns({func_inner: func_innerStub}) 

Sie können diese Muster mit dem Funktion myfunc folgen, auch und geben als param die func_outerStub.