首頁 >web前端 >js教程 >為什麼 `expect.to.throw` 無法捕捉 Chai 中拋出的錯誤?

為什麼 `expect.to.throw` 無法捕捉 Chai 中拋出的錯誤?

DDD
DDD原創
2024-11-27 09:09:10302瀏覽

Why Does `expect.to.throw` Fail to Catch Thrown Errors in Chai?

Mocha / Chai Expect.to.throw:了解它是如何工作的

在測試中,確保按預期拋出錯誤至關重要。然而,使用者經常遇到 Chai 的expect.to.throw 的挑戰,無法正確捕捉拋出的錯誤。讓我們深入研究為什麼會出現這種情況以及如何解決。

直接將函數呼叫的結果傳遞給expect.to.throw 時就會出現問題。例如,expect(model.get('z')).to.throw(...)。在這種情況下,您對 model.get('z') 的傳回值進行斷言,而不是實際拋出錯誤。

要解決此問題,您需要傳遞一個等待呼叫的函數期待。然後,函數將使用適當的參數呼叫 model.get。考慮以下程式碼:

expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');

這裡,model.get.bind(model, 'z') 建立一個新函數,在呼叫時,使用 'z' 參數呼叫 model.get,解決問題。

理解這種行為對於有效使用expect.to.throw 至關重要。請記住傳遞會引發預期錯誤的函數,確保錯誤處理場景的準確測試。

以上是為什麼 `expect.to.throw` 無法捕捉 Chai 中拋出的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn