作为参数传递的 Sinon 匿名存根

Sinon anonymous stub passed as a parameter

我正在尝试在 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 不是一个函数。我知道它们是存根对象,但如果是这样的话,处理这种情况的正确方法是什么。

将存根传递为

AccountApp.fetchData({ firstStub , secondStub });

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

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

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

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

我严重怀疑您的生产代码将这些回调引用为 "stubs"。所以你可能想像这样调用函数:

AccountApp.fetchData(firstStub, secondStub);