Sinon匿名存根作为参数传递

时间:2016-03-23 17:03:34

标签: javascript unit-testing reactjs redux sinon

我正在尝试在redux容器中测试一个函数,但问题几乎不是关于redux或反应。基本上我试图测试的fetchData函数,将两个函数作为参数并调用它们。

我希望做的是拥有两个匿名存根并以这种方式将它们传递给函数:

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

当发生这种情况时,我的函数fetchData抱怨firstStub和secondStub不是函数。我知道它们是存根对象,但如果是这种情况,那么管理这种情况的正确方法是什么。

1 个答案:

答案 0 :(得分:1)

将存根传递为

AccountApp.fetchData({ firstStub , secondStub });

似乎是罪魁祸首,因为这意味着你实际上(在ES6脱欧之后)调用了这个:

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

这意味着你的fetchData()函数需要有这样的实现:

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

我严重怀疑您的生产代码将那些回调称为“存根”。所以你可能想调用这样的函数:

AccountApp.fetchData(firstStub, secondStub);