Jest 测试中使用 Snapshot 的实践

阅读时长 4 分钟读完

什么是 Jest?

Jest 是一个由 Facebook 开发的 JavaScript 测试框架,用于编写可靠、可重复、可维护的测试。它具有易于使用、快速、自动化快照测试等特性,让测试变得更加简单。

什么是 Snapshot?

当我们测试一些常量的行为时,可以用 Jest 中的快照来测试。快照可以拉取测试结果,并将其保存为文件。下一次测试时,Jest 会将新结果与先前的快照进行比较。如果结果已经更改,则会发生警告,并且可以决定是否接受更改。

为什么要使用 Snapshot?

使用快照测试可以减少手动创建测试的必要性,同时确保每次测试结果的一致性。一旦你确信你的快照是正确的,你就可以更改代码并确保保留该行为。使用快照测试也可以显著简化开发过程,因为您会知道什么会受到更改、什么不会受到更改。

在 Jest 中如何使用 Snapshot?

在我们的测试文件中,使用 Jest 中的 toMatchSnapshot() 函数,如下所示:

将测试运行时,Jest 会在您的项目中的 __snapshot__ 目录下创建新的快照目录。在运行后,可以随时检查您当前创建的快照是否正确。如果快照正确,Jest 将输出 PASS,否则将输出 FAIL。如果您接受更改,可以手动更新快照,该快照将更新并分配您的测试。

Jest Snapshot 实践

下面我们以一个 React 组件为例进行 Snapshot 实践。

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

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

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

我们首先需要创建一个测试文件来测试 Button 组件。

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

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

在上面的代码中,我们将 Button 组件的渲染结果与快照进行比较。如果渲染结果与快照相同,则测试通过,否则失败。运行测试后,Jest 会在 __snapshot__ 目录下创建一个文件夹,其中包含 Button.test.js.snap 快照文件。

我们修改组件的部分样式,再次运行测试,测试将失败,因为快照已经过期。我们可以接受更改并更新快照,或者在我们确认该更改是故意的情况下,我们也可以用 -u 运行 Jest 来更新快照。

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

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

在上面的代码中,我们更新了组件的 classNamedisabled 属性,并修改了快照。再次运行测试,我们可以看到测试通过。

总结

使用 Jest Snapshot 的快照测试是一种简单而有效的测试方法。使用 Jest 中的 toMatchSnapshot() 函数,可以轻松创建快照测试并确保测试的可靠性。建议将 Snapshot 测试作为测试策略的一部分来使用,尤其是针对一些常量的行为。

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

纠错
反馈