[英]Sinonjs test method that consumes a promise
我有一個javascript方法,看起來像這樣:
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中的諾言完成之前觸發。 我可以更新someMethod來返回一個諾言,但這對我來說有點腥。 歡迎任何輸入,謝謝!
您創建了一個異步方法,該方法既不返回promise也不包含回調作為參數。 這不是一個好習慣,因為您不知道異步功能何時完成。 一個簡單的解決方法是從函數中返回承諾,並將您的斷言作為承諾鏈的一部分執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.