在 Jest 中使用 toHaveBeenLastCalledWith()

阅读时长 5 分钟读完

背景介绍

在前端开发中,我们经常需要测试 React 组件的行为。为了保证组件的正确性,我们需要针对每个组件的每个交互事件都进行测试,并检查其是否正确地产生了预期的效果。Jest 是一个流行的 JavaScript 测试框架,它允许我们编写高效且易于维护的测试用例。

toHaveBeenLastCalledWith() 方法介绍

Jest 中提供了许多用于测试的方法和断言。其中 toHaveBeenLastCalledWith() 方法是一个特别有用的方法,它允许我们检查特定的函数在最后一次调用时所传入的参数。具体来说,它可用于检查我们的 React 组件是否正确地传递了所需的参数给其子组件或其自身的函数。

toHaveBeenLastCalledWith() 方法的使用

让我们来看一个简单的例子。假设我们有一个简单的 React 组件:

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

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

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

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

我们想要检查传递给 onClick() 函数的参数是否正确。为此,我们可以编写一个 Jest 测试用例,使用 toHaveBeenLastCalledWith() 方法。如下所示:

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

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

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

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

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

在这个测试用例中,我们将 onClick() 函数传递给 SimpleComponent 组件,在组件被挂载后,我们模拟了一次按钮点击事件,并保证 onClick() 函数被调用了一次。最后,我们使用 toHaveBeenLastCalledWith() 断言,确保该函数在最后一次调用时没有参数。在这个例子中,我们并没有向 onClick() 函数传递任何参数,因此这个测试会通过。如果我们向 onClick() 函数传递了参数,但没有使用 toHaveBeenLastCalledWith() 方法,这个测试将会失败。

除了不带参数的情况,我们还可以使用 toHaveBeenLastCalledWith() 检查特定的参数值是否已经被传递。例如,假设我们想要检查 onClick() 函数是否被传递了一个包含特定颜色的对象。我们可以按以下方式更改测试代码:

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

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

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

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

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

在这个例子中,我们使用 toHaveBeenLastCalledWith() 方法,检查 onClick() 函数在最后一次调用时是否被传递了一个包含颜色属性的对象。如果 onClick() 函数未被传递特定的参数,该测试将失败。

结论

使用 toHaveBeenLastCalledWith() 方法,可以确保我们的 React 组件正确地传递了所需的参数,从而提高代码的质量和可靠性。尽管它比其他测试技巧稍微复杂一些,但它非常有用,并且在测试大型项目时几乎是必需的。

示例代码

完整的示例代码可以在以下 GitHub 存储库中找到:

https://github.com/example/jest-tohavebeenlastcalledwith

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

纠错
反馈