我在這部分代碼中遇到錯誤。Received promise resolved instead of rejected我不知道如何處理這個問題,有人可以幫我嗎?
it("should not create a media if the user doesn't exist", async () => {
user.user= undefined;
await usersRepository.save(user);
await expect(
createMedia.execute({
performerId: user.id,
type: 'video',
media: 'video-media',
description: 'description',
}),
).rejects.toBeInstanceOf(AppError);
});
和:
expect(received).rejects.toThrow()
Received promise resolved instead of rejected
Resolved to value: {"description": "description", "id": "id number", "media": "video-media", "userId": "id user", "type": "video"}
uj5u.com熱心網友回復:
您的代碼正在創建一個成功的承諾,然后您針對拒絕進行測驗,因此它失敗了,因為它成功執行并且您告訴它您希望它失敗。
當您使用時,.rejects您告訴expect您希望它失敗并被拒絕,在這種情況下它成功了。如果您將其更改為 aresolves而不是 a rejects,它將起作用。
或者您必須通過更新不存在的內容來確保您正在執行的查詢實際上會失敗。
另一種方法是實際執行您的查詢,從中獲取結果,然后expect對回傳資料進行斷言。
為了更清楚,正常的承諾看起來像這樣:
const example = () => new Promise((resolve, reject) => ...
然后你可以呼叫這些 resolve 和 reject 方法,這取決于promise是正確決議還是失敗,你可以呼叫reject。當您使用.resolves或.rejects開玩笑時,它正在測驗承諾上的解決和拒絕方法。
當你使用一個async函式時,你實際上并沒有看到它,但它在做同樣的事情。
更重要的是,當用戶上傳的檔案多于他們實際可以上傳的檔案時,它會中斷,這就是為什么在您的情況下它實際上不會失敗,因為它實際上確實被拒絕了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/349968.html
標籤:javascript 节点.js 打字稿 承诺 玩笑
上一篇:Dicom影像太亮
下一篇:打字稿映射泛型
