2016-03-23 16 views
3

Ich versuche, eine Funktion in einem Redux-Container zu testen, aber das Problem ist kaum über Redux oder reagieren. Grundsätzlich die fetchData-Funktion, die ich versuche zu testen, nimmt zwei Funktionen als Parameter und ruft sie auf.Sinon anonymous Stub als Parameter übergeben

Was ich hatte gehofft, war zu tun, zwei anonymen Stubs zu haben und sie in die Funktion auf diese Weise passieren:

var firstStub = sinon.stub().withArgs(mockResponse).returns('success'); 
var secondStub = sinon.stub().withArgs(mockResponse).returns('success'); 
AccountApp.fetchData({ firstStub , secondStub }); 

Wenn diese meine Funktion geschieht FetchData beschwert sich über die firstStub und secondStub keine Funktion zu sein. Ich weiß, sie sind Stub-Objekte, aber wenn das der Fall ist, was ist der richtige Weg, um diese Situation zu verwalten.

+2

ich ein bisschen überrascht mich, dass das Argument, um zu sehen, '{firstStub, secondStub}' - dh Sie vorbei ein Objekt '{firstStub: firstStub, secondStub: secondStub} '- willst du das wirklich machen? – Nicole

+0

Ja, ich war auch ein bisschen überrascht, ehrlich, ich habe keine Ahnung, warum irgendjemand das gemacht hat. Denken Sie, dass es die Ursache des Problems sein könnte? – ralzaul

+0

gut scheint, dass dies das Problem ist jetzt funktioniert es gut, aber weiß nicht warum? – ralzaul

Antwort

1

Vorbei an der Stubs als

AccountApp.fetchData({ firstStub , secondStub }); 

scheint der Täter zu sein, weil dies bedeutet, dass Sie tatsächlich (nach ES6 Entzuckern) aufrufen dies:

AccountApp.fetchData({ firstStub: firstStub, secondStub: secondStub }); 

und dies bedeutet, dass Ihre FetchData() Funktion müsste eine Implementierung wie folgt haben:

function(args) { 
    // .... 
    args.firstStub(params); 
    args.secondStub(params); 
    // ... 
}; 

ich ernst Ich bezweifle, dass Ihr Produktionscode diese Rückrufe als "Stubs" bezeichnet. So wollen Sie wahrscheinlich die Funktion wie folgt aufgerufen:

AccountApp.fetchData(firstStub, secondStub); 
Verwandte Themen