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