在 Jest 中捕获异步事件的形式

阅读时长 3 分钟读完

Jest 是一个流行的 JavaScript 测试框架,旨在提供开箱即用的测试体验。在编写前端测试时,需要处理异步代码,而 Jest 提供了许多捕获异步事件的方式。本文将介绍在 Jest 中捕获异步事件的不同形式以及如何使用它们。

Callback

异步测试的最常见形式是通过回调函数进行。例如,处理 AJAX 请求或定时器回调等。在 Jest 中,可以使用 done 参数来指示测试已完成。当测试调用 done() 时,Jest 才会认为测试结束。

-- -------------------- ---- -------
------------------ ------ -- -
  -------- ------------------- -
    ------------- -- -
      -----------------
    -- -----
  -

  ---------------- -- -
    --------------------------
    -------
  ---
---

在此测试中,我们创建了一个 fetchData 函数,它将在 100 毫秒后返回数据。我们使用回调函数来接收数据,在回调函数中进行断言,并在完成后调用 done

Promise

另一个常见的异步形式是 Promise。在 Jest 中,我们可以使用 return 来测试 Promise。Jest 等待 Promise 完成,然后进行断言。如果 Promise 被拒绝,则测试将自动失败。

-- -------------------- ---- -------
-------- ------- -------- -- -- -
  -------- ----------- -
    ------ --- ----------------- ------- -- -
      ------------- -- -
        ----------------
      -- -----
    ---
  -

  ------ ----------------------- -- -
    --------------------------
  ---
---

在此测试中,我们创建了一个返回 Promise 的函数并等待它完成。在完成后,我们进行断言,我们不再需要使用 done,因为 Jest 等待 Promise 完成。

Async/Await

自 ES7 以来,我们可以使用 async/await 来处理异步方式。在 Jest 中,我们可以将测试函数声明为异步函数,并使用 await 来等待异步代码完成。如果 Promise 被拒绝,则使用 try-catch 块捕获错误。

-- -------------------- ---- -------
-------- ----------- -------- ----- -- -- -
  -------- ----------- -
    ------ --- ----------------- ------- -- -
      ------------- -- -
        ----------------
      -- -----
    ---
  -

  ----- ---- - ----- ------------
  --------------------------
---

在此测试中,我们声明函数为异步函数,并使用 await 等待 Promise 完成。在完成后,我们进行断言。

其他形式

除了以上形式,Jest 提供了许多其他形式来处理异步代码。例如 jest.useFakeTimers()jest.runOnlyPendingTimers() 可以用于处理定时器。使用 Jest 的 expect().resolvesexpect().rejects 可以测试 Promise 的状态。在测试中,您最好使用适当的形式来处理您的异步代码。

结论

在 Jest 中捕获异步事件的形式有很多,本文介绍了常用的几种。如果您有一些异步测试需要处理,请使用该方式来保证您的测试代码可靠性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676fd854e9a7045d0d774ce4

纠错
反馈