Javascript Sinon存根函数参数

Javascript Sinon存根函数参数,javascript,mocha.js,sinon,sinon-chai,Javascript,Mocha.js,Sinon,Sinon Chai,我有一个带有路由器的express应用程序,我想用Sinon进行测试。我没有成功模拟传递到请求处理程序中的响应参数,希望获得一些帮助 export const pingHandler=(请求、响应、下一步)=>{ response.status(200).send('Hello world'); } 这是我目前使用摩卡、西农、柴和柴西农的测试设置伪造。从未按预期调用状态 description(“pingHandler”,()=>{ 它(“应该返回200”,异步()=>{ 常数fakeResp

我有一个带有路由器的express应用程序,我想用Sinon进行测试。我没有成功模拟传递到请求处理程序中的
响应
参数,希望获得一些帮助

export const pingHandler=(请求、响应、下一步)=>{
response.status(200).send('Hello world');
}
这是我目前使用摩卡、西农、柴和柴西农的测试设置<代码>伪造。从未按预期调用状态

description(“pingHandler”,()=>{
它(“应该返回200”,异步()=>{
常数fakeResponse={
状态:sinon.fake(()=>({
发送:sinon.spy()
}))
};
pingHandler({},fakeResponse,{});
expect(fakeResponse.status).to.have.been.call;
//=>预计fake至少被调用过一次,但从未被调用过
});
});

以下是单元测试解决方案:

index.ts

export const pingHandler=(请求、响应、下一步)=>{
response.status(200).send('Hello world');
}
索引规范ts

从“/”导入{pingHandler};
从“sinon”进口sinon;
描述(“pingHandler”,()=>{
它(“应该返回200”,()=>{
常数mRes={
状态:sinon.stub().returnsThis(),
发送:sinon.stub(),
};
pingHandler({},mRes,{});
sinon.assert.calledWith(mRes.status,200);
sinon.assert.calledWith(mRes.send,“Hello world”);
});
});
100%覆盖率的单元测试结果:

pingHandler
✓ 应该返回200
1次通过(8毫秒)
---------------|----------|----------|----------|----------|-------------------|
文件|%Stmts |%Branch |%Funcs |%Line |未覆盖行|s|
---------------|----------|----------|----------|----------|-------------------|
所有文件| 100 | 100 | 100 | 100 ||
索引规范ts | 100 | 100 | 100 | 100 ||
index.ts | 100 | 100 | 100 | 100 ||
---------------|----------|----------|----------|----------|-------------------|

哇,回答得真棒!谢谢!