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中文網其他相關文章!