簡體   English   中英

Sinonjs消耗諾言的測試方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM