簡體   English   中英

在茉莉花測試中處理 Promise.all 中的拒絕

[英]Handling reject in Promise.all in jasmine tests

我正在嘗試在 jasmine 中測試一個包含 Promise.all 的函數(TypeScript,但我認為我在 JS 中會遇到同樣的問題) - 我想確保我正確處理拒絕:

function foo(): Promise<void> {
    return Promise.all(promise1, promise2)
        .catch(() => undefined)
        .then(() => undefined);
}

function bar() {
    foo().finally(makeBarHappen);
}

然后我的測試是這樣的,我模擬 foo 中的一個承諾失敗:

it('test bar happens even when foo fails', async () => {
     mocks.promise1.and.returnValue(Promise.reject('loremipsum'));

     pressButtonThatTriggersBar();

     await timeout(longEnoughTimeoutForBarToHappen);

     expect(barHappened);
});

問題是,我收到了來自 Jasmine 的“未處理的拒絕:拋出 loremipsum”錯誤 - 即使我相信我正在使用 foo 中的 catch() 處理拒絕? 我不需要為 Promise.all 中的每個承諾單獨捕獲,對嗎? 我手動測試了它,它確實捕獲了拒絕並表現得很好,所以我不確定在 Jasmine 中測試它的最佳方法。 謝謝!

看起來測試 promise1 失敗的正確方法是:

mocks.promise1.and.throwError('');

Promise.reject() 在被我的實際錯誤處理代碼捕獲之前就被 Jasmine 捕獲了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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