Jest 如何將複雜的判斷條件中的具體問題暴露出來?

白宦成發表於2022-02-19

在寫測試的時候,如果你需要對大量的資料進行 compare 處理的時候,你大概率不會把所有需要對比的物件都列出來,而是選擇直接迴圈處理。

在測試中如果有迴圈處理的時候,很有可能會出現的一個問題是你可能無法在測試無法通過時快速定位道具體是迴圈中的哪一個元素出現的問題。這個時候的定位就會比較麻煩。

一個比較好的辦法是,可以在 Jest 中加入 try/catch 中來處理錯誤,這樣可以在出現錯誤的時候,列印一些輔助資訊來快速定位,比如

it('test-error-catch-example',() => {

   let needTestData = [1,2,3,4]

   needTestData.foreach( item => {
       let result = doSomething(item)
       // 這裡開始是新增的
       try{
          expect(result).toBe(true)
       }catch(e){
          console.log("error key",item)
          throw e;
       }
       // 新增的錯誤處理結束
   })

})

通過新增一個自定義的 try catch ,可以在出現問題的時候,一方面將 Error 按照常規的方式丟擲,等待 Jest 處理,另一方面,可以在 catch 時輸出自定義的資訊,方便我們進行排查和修復。

相關文章