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

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

Linda Hamilton
發布: 2024-11-17 11:53:01
原創
855 人瀏覽過

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

Mocha / Chai Expect.to.throw 無法捕捉拋出的錯誤?

在您的 Node.js 測試中,您在使用 Chai 的 Expect.to 時遇到了困難.throw 檢測拋出的錯誤。測試始終失敗,報告拋出的錯誤。但是,如果將測試封裝在 try-catch 區塊中並對捕獲的錯誤進行斷言,則測試會通過。

expect.to.throw 是否未如預期運作?

要解決此問題,您需要傳遞一個期望的函數,而不是函數呼叫的結果:

expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');
expect(model.get.bind(model, 'z')).to.throw(new Error('Property does not exist in model schema.'));
登入後複製

在您原來的方法中,您正在將呼叫model .get('z') 的結果傳遞給預期。要測試函數是否拋出錯誤,您必須提供一個函數供expect呼叫自身。 bind 方法建立一個新函數,當呼叫函數時,會使用預期的參數呼叫 model.get。

請參閱提供的文件以進一步了解綁定方法。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板