npm 包 jest-serializer-functions 使用教程

阅读时长 3 分钟读完

前言

在编写 JavaScript 的测试代码时,我们通常会使用 Jest 测试框架进行测试。Jest 提供了许多内置的 assertion API 和 mock API,使得我们编写测试代码时能够更加高效且方便。

然而,Jest 并不支持对函数进行深度比较,当我们在测试某个函数在输入相同时是否返回期望的结果时,就需要考虑该如何实现深度比较。

在这篇文章中,我们将会介绍一个 npm 包 jest-serializer-functions,它提供了一种非常方便实用的方式来进行深度比较。

安装

你可以通过以下命令来安装 jest-serializer-functions:

使用

下面我们将演示如何通过 jest-serializer-functions 进行深度比较。

基本用法

首先,在我们的测试文件中引入 jest-serializer-functions:

然后,我们就可以在测试用例中进行深度比较了:

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

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

在上面的测试用例中,我们调用了 Jest 的 toMatchSnapshot 方法来生成一个快照,该快照将包含我们的函数,并且使用 jest-serializer-functions 进行了深度比较。如果函数中包含了一些自定义属性,则 jest-serializer-functions 会自动地将其序列化后进行比较。

支持函数序列化

如果某个函数包含了一些自定义属性,那么在比较过程中,这些自定义属性将不会被考虑在内。

不过,我们可以通过给这些函数添加 toJSON 方法来支持函数序列化。

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

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

在上面的例子中,我们给 output.baz 添加了一个 toJSON 方法,并通过 expect 方法生成了一个快照。

总结

通过本文,我们介绍了如何使用 jest-serializer-functions 进行深度比较,并支持了函数序列化。希望本文能够对大家在编写 JavaScript 测试代码时能够更加高效且方便有所帮助。

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

纠错
反馈