简体   繁体   中英

Sinon anonymous stub passed as a parameter

I am trying to test a function in a redux container but the issue is barely about redux or react. Basically the fetchData function I am trying to test, takes two functions as parameters and calls them.

What I was hoping to do was to have two anonymous stubs and pass them to the function this way:

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

When this happens my function fetchData complains about the firstStub and secondStub not being a function. I know they are stub objects but if that is the case what is the correct way of managing this situation.

Passing the stubs as

AccountApp.fetchData({ firstStub , secondStub });

seems to be the culprit, because this means that you actually (after ES6 desugaring) invoke this:

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

and this means that your fetchData() function would need to have an implementation like this:

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

I seriously doubt that your production code refers to those callbacks as "stubs". So you probably want to invoke the function like this:

AccountApp.fetchData(firstStub, secondStub);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM