Javascript 在方法有两个参数的情况下,有没有办法使用sinon来存根方法

Javascript 在方法有两个参数的情况下,有没有办法使用sinon来存根方法,javascript,unit-testing,mocha.js,sinon,chai,Javascript,Unit Testing,Mocha.js,Sinon,Chai,让我解释一下问题陈述: 我用的是摩卡、柴和西农。我正在尝试存根一个如下所示的方法: myNamespace.myMethod({ beforeSend(){…} },回调) 我想存根myMethod并在发送之前调用以及回调。我无法找到有效的解决方案。我尝试了以下方法,但无效: sinon.stub(myNamespace,'myMethod').yieldsTo('beforeSend',{}).callsArg(1); 我做错了什么?不可能像这样为同一个函数调用链接两个不同的行为,因此.c

让我解释一下问题陈述:

我用的是摩卡、柴和西农。我正在尝试存根一个如下所示的方法:

myNamespace.myMethod({
beforeSend(){…}
},回调)
我想存根
myMethod
并在发送之前调用
以及
回调
。我无法找到有效的解决方案。我尝试了以下方法,但无效:

sinon.stub(myNamespace,'myMethod').yieldsTo('beforeSend',{}).callsArg(1);

我做错了什么?

不可能像这样为同一个函数调用链接两个不同的行为,因此
.callsArg(1)
最终覆盖
.yieldsTo('beforeSend',{})

对于这种情况,您需要提供一个假的实现,包括:

const sinon=require('sinon');
常量myNamespace={
myMethod:(obj,回调)=>{}
}
它('myMethod',()=>{
const beforeSendArg={};
sinon.stub(myNamespace,'myMethod').callsFake((obj,callback)=>{
对象发送前(发送前参数);
回调();
});
const beforeSend=sinon.spy();
const callback=sinon.spy();
myNamespace.myMethod({beforeSend},回调);
sinon.assert.calledWithJustice(beforeSend,beforeSendArg);//成功!
sinon.assert.called(回调);//成功!
});

我试试看!