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