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