我正在測驗一個組件,該組件使用useEffect從 API 獲取資料、更新狀態然后構建組件的鉤子。我已經使用
如果我拒絕承諾,我仍然會收到相同的錯誤,但也會收到拋出的例外:
global.fetch = jest.fn().mockImplementationOnce(() => {
Promise.reject({
status: 400,
json: () => Promise.resolve({ success: false, error: 'Something bad happened' }),
})
})

該 API 使用 NextApiResponse,如下所示:
try {
// Query data from database
const data = methodThatGetsDataFromDatabase()
return res.status(200).json({ success: true, data: data })
} catch (error) {
return res.status(400).json({ success: false, error: error.message })
}
我已經在這方面作業了很長時間,并且已經讓谷歌筋疲力盡地尋找答案。我只是無法弄清楚為什么fetch是未定義而不是回傳承諾。任何幫助是極大的贊賞!
uj5u.com熱心網友回復:
我發現的不同之處在于,您成功的 fetch 模擬實際上回傳了 Promise。
但是失敗的 fetch 模擬并沒有回傳——注意在 Promise 周圍微妙地添加了花括號。你能在沒有大括號的情況下檢查這個嗎?
global.fetch = jest.fn().mockImplementationOnce(() =>
Promise.resolve({
status: 400,
json: () => Promise.resolve({ success: false, error: 'Something bad happened' }),
})
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/411663.html
標籤:
