首頁 > web前端 > js教程 > 為什麼 Node.js 測試中「expect.to.throw」無法斷言拋出的錯誤?

為什麼 Node.js 測試中「expect.to.throw」無法斷言拋出的錯誤?

Patricia Arquette
發布: 2024-11-15 15:57:03
原創
228 人瀏覽過

Why Does `expect.to.throw` Fail to Assert Thrown Errors in Node.js Tests?

Chai:解決Node.js 中難以捉摸的Expect.to.throw

Chai 的Expect.to.throw 在Node.js中可能會令人困惑。 js測試。儘管其預期目的是斷言拋出的錯誤,但當直接應用於程式碼片段時,它常常會失敗。

理解問題:

考慮範例測試案例:

it('should throw an error if you try to get an undefined property', function (done) {
  // Passing the result of model.get('z') directly fails
  expect(model.get('z')).to.throw('Property does not exist in model schema.');
});
登入後複製

儘管實際上拋出了錯誤,但該測試失敗了。一個常見的誤解是expect.to.throw處理拋出錯誤的檢索和斷言。

解決方案:擁抱函數傳遞:

解決這個問題的關鍵問題在於將函數傳遞給expect.to.throw而不是結果。函數將由expect執行,觸發對拋出錯誤的檢索和驗證:

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

在這段修改後的程式碼中,model.get綁定到模型物件的上下文,並設定了'z '作為其論點。然後,將產生的函數傳遞給expect.to.throw,確保捕獲並斷言預期的錯誤。

遵循此方法,您可以利用 Node 中的expect.to.throw 的全部功能。 js 測試,有效斷言拋出錯誤的發生並確保程式碼的健全性。

以上是為什麼 Node.js 測試中「expect.to.throw」無法斷言拋出的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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