Javascript 与sinon的存根链承诺
使用Javascript 与sinon的存根链承诺,javascript,express,promise,sinon,stub,Javascript,Express,Promise,Sinon,Stub,使用sinon,如何取消连锁承诺?我试过以下方法,但没有成功 let image = await object .firstCall(params) .promise() .then(data => { return data }) .catch(err => { console.(err) }); 单元测试解决方案: index.ts: 从'/obj'导入{object};
sinon
,如何取消连锁承诺?我试过以下方法,但没有成功
let image = await object
.firstCall(params)
.promise()
.then(data => {
return data
})
.catch(err => {
console.(err)
});
单元测试解决方案:
index.ts
:
从'/obj'导入{object};
导出异步函数main(){
常量参数={};
回波信号
.firstCall(参数)
.承诺
。然后((数据)=>{
返回数据;
})
.catch((错误)=>{
控制台日志(err);
});
}
obj.ts
:
导出常量对象={
第一次呼叫(参数){
归还这个;
},
异步承诺(){
返回“真实数据”;
},
};
index.test.ts
:
从“/”导入{main};
从“/obj”导入{object};
从“sinon”进口sinon;
从“chai”导入{expect};
描述('64795845',()=>{
之后(()=>{
sinon.restore();
});
它('应该返回数据',异步()=>{
const promiseStub=sinon.stub(对象“promise”)。解析(“假数据”);
const firtCallStub=sinon.stub(对象“firstCall”).returnsThis();
常量实际值=等待主();
expect(实际).to.be.equal(‘假数据’);
sinon.assert.calledWithJustice(firtCallStub,{});
sinon.assert.calledOnce(承诺存根);
});
});
单元测试结果:
promiseStub = sinon.stub().callsArg(0).resolves("something");
firtCallStub = sinon.stub(object, "firstCall").returns(this.promiseStub);
64795845
✓ should return data
1 passing (32ms)
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 66.67 | 100 | 40 | 66.67 |
index.ts | 83.33 | 100 | 66.67 | 83.33 | 12
obj.ts | 33.33 | 100 | 0 | 33.33 | 3-6
----------|---------|----------|---------|---------|-------------------