# Jest 如何将复杂的判断条件中的具体问题暴露出来？

- Link: https://www.ixiqin.com/2022/02/17/how-does-jest-expose-specific-issues-in-complex-judgment/
- Published: 2022-02-17T11:07:51+08:00
- Author: 白宦成

在写测试的时候，如果你需要对大量的数据进行 compare 处理的时候，你大概率不会把所有
需要对比的对象都列出来，而是选择直接循环处理。

在测试中如果有循环处理的时候，很有可能会出现的一个问题是你可能无法在测试无法通过
时快速定位道具体是循环中的哪一个元素出现的问题。这个时候的定位就会比较麻烦。

一个比较好的办法是，可以在 Jest 中加入 `try/catch` 中来处理错误，这样可以在出现错误
的时候，打印一些辅助信息来快速定位，比如

    ```javascript
    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;
           }
           // 新增的错误处理结束
       })

    })
    Code language: JavaScript (javascript)
    ```

通过添加一个自定义的 try catch ，可以在出现问题的时候，一方面将 Error 按照常规的
方式抛出，等待 Jest 处理，另一方面，可以在 catch 时输出自定义的信息，方便我们进行
排查和修复。
