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               
----------|---------|----------|---------|---------|-------------------