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