Javascript Sinonjs使用承诺的测试方法
我有一个javascript方法,看起来像这样:Javascript Sinonjs使用承诺的测试方法,javascript,node.js,unit-testing,sinon,Javascript,Node.js,Unit Testing,Sinon,我有一个javascript方法,看起来像这样: someMethod=function(){ somePromise.run().then(()=>{ //do success stuff }).catch((err)=>{ //do fail stuff registerError(err); }); } 我想确保错误被注册,所以我设置了以下测试 it('should register error', ()=>{ somePromi
someMethod=function(){
somePromise.run().then(()=>{
//do success stuff
}).catch((err)=>{
//do fail stuff
registerError(err);
});
}
我想确保错误被注册,所以我设置了以下测试
it('should register error', ()=>{
somePromise = {
run: sinon.stub
};
registerError = sinon.stub;
somePromise.returns(Promise.reject({err: 'foo'}));
someMethod();
assert(registerError.calledWith({err: 'foo'}));
});
此测试失败,因为断言在someMethod中的承诺完成之前激发。我可以更新一些方法来回报一个承诺,但我觉得这有点可疑。欢迎任何意见,谢谢 您创建了一个异步方法,该方法既不返回承诺,也不包含回调作为参数。这不是一个好的实践,因为您无法知道异步函数何时完成。一个简单的修复方法是从函数返回承诺,并作为承诺链的一部分执行断言