Jest 如何使用 expect 语句来验证函数调用次数

阅读时长 4 分钟读完

前言

在前端开发中,我们经常需要验证一些函数是否被正确调用。Jest 是一个流行的 JavaScript 测试框架,提供了很多强大的工具来帮助我们编写高质量的测试代码。在本文中,我们将学习如何使用 Jest 中的 expect 语句来验证函数的调用次数。

expect 语句简介

在 Jest 中,expect 语句是最常用的断言语句之一。它允许我们编写表达式,用于测试某个值是否符合我们的预期。例如,我们可以使用 expect 语句来测试一个变量的值是否等于预期的值:

这段代码会测试变量 a 的值是否等于 2,如果不等于 2 的话,那么测试就会失败。toBe 方法是 expect 语句中最常用的断言方法之一,它用于测试两个值是否相等。如果使用非严格比较运算符(==)来测试两个值的相等性,那么这个方法就会使用严格比较运算符(===)来测试相等性。除了 toBe 方法,expect 语句还提供了很多其他的断言方法,可以用来测试不同的条件。

验证函数调用次数

有时候,我们需要测试某个函数被调用的次数是否符合预期。例如,我们考虑下面这个函数:

如果我们希望测试这个函数被调用的次数,我们可以使用 Jest 中的 spyOn 方法来模拟这个函数,并且在测试中对它进行跟踪。spyOn 方法接受两个参数:被跟踪的对象和被跟踪的方法名称。以下是一个例子:

现在,我们可以使用 expect 语句来测试函数被调用的次数是否符合预期。例如,我们可以使用 toHaveBeenCalled 方法来测试函数被调用了一次:

如果我们希望测试函数被调用了多次,我们可以将 toHaveBeenCalled 方法与 toHaveBeenCalledTimes 方法结合使用:

这将测试函数被调用了三次。我们可以在任何时候调用 spy.mockReset() 方法来重置 spy 对象,从而取消函数的跟踪。

示例代码

以下是一个完整的示例,显示了如何使用 expect 语句来测试函数的调用次数:

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

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

这个示例定义了一个名为 add 的函数,然后使用 spyOn 方法来跟踪该函数。接下来,我们调用 add 函数三次,并进行相应的断言,测试函数被调用的次数是否符合预期。最后,我们调用 spy.mockReset() 方法来重置 spy 对象,以备后续测试使用。

结论

在 Jest 中,我们可以使用 expect 语句来测试函数被调用的次数是否符合预期。spyOn 方法可以用来跟踪函数的调用,而 toHaveBeenCalled 方法和 toHaveBeenCalledTimes 方法可以用来测试函数被调用的次数。在进行测试时,我们应该以简单,易于维护和易于理解的方式编写测试代码,从而确保我们的代码能够正确地工作。

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

纠错
反馈