首頁 > web前端 > js教程 > 為什麼 Mocha 的 Expect.to.throw 無法捕捉我的預期錯誤?

為什麼 Mocha 的 Expect.to.throw 無法捕捉我的預期錯誤?

Linda Hamilton
發布: 2024-11-24 03:29:09
原創
1016 人瀏覽過

Why is Mocha's expect.to.throw Failing to Catch My Expected Errors?

Mocha 的expect.to.throw 出現遺失拋出錯誤的問題

當使用Chai 的expect.to.throw 測試節點中的異常時.js 應用程序,您可能會遇到意想不到的結果。如果測試因未捕獲的錯誤而失敗,但將測試包裝在 try...catch 中並斷言捕獲的錯誤成功,您可能會質疑 Expect.to.throw 的功能。

問題的癥結所在在於expect.to.throw的運作方式。為了有效地測試異常的發生,需要一個函數作為輸入。透過將函數傳遞給expect,它可以呼叫該函數並驗證是否引發異常。

在提供的程式碼片段中,您直接將 model.get('z') 的結果傳遞給expect 。但是,這種方法傳遞函數的傳回值而不是函數本身。要修正這個問題,您需要為expect提供一個在呼叫時執行model.get的函數。

更新的程式碼:

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.'));
登入後複製

透過使用bind方法,建立了一個新函數。呼叫時,它使用指定的參數來呼叫 model.get,從而模擬 model.get('z') 的執行。這允許expect.to.throw評估函數在執行過程中是否拋出異常。

以上是為什麼 Mocha 的 Expect.to.throw 無法捕捉我的預期錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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