前言
在前端开发中,我们经常需要验证一些函数是否被正确调用。Jest 是一个流行的 JavaScript 测试框架,提供了很多强大的工具来帮助我们编写高质量的测试代码。在本文中,我们将学习如何使用 Jest 中的 expect 语句来验证函数的调用次数。
expect 语句简介
在 Jest 中,expect 语句是最常用的断言语句之一。它允许我们编写表达式,用于测试某个值是否符合我们的预期。例如,我们可以使用 expect 语句来测试一个变量的值是否等于预期的值:
const a = 2; expect(a).toBe(2);
这段代码会测试变量 a 的值是否等于 2,如果不等于 2 的话,那么测试就会失败。toBe 方法是 expect 语句中最常用的断言方法之一,它用于测试两个值是否相等。如果使用非严格比较运算符(==)来测试两个值的相等性,那么这个方法就会使用严格比较运算符(===)来测试相等性。除了 toBe 方法,expect 语句还提供了很多其他的断言方法,可以用来测试不同的条件。
验证函数调用次数
有时候,我们需要测试某个函数被调用的次数是否符合预期。例如,我们考虑下面这个函数:
function add(a, b) { return a + b; }
如果我们希望测试这个函数被调用的次数,我们可以使用 Jest 中的 spyOn 方法来模拟这个函数,并且在测试中对它进行跟踪。spyOn 方法接受两个参数:被跟踪的对象和被跟踪的方法名称。以下是一个例子:
const spy = jest.spyOn(window, 'add');
现在,我们可以使用 expect 语句来测试函数被调用的次数是否符合预期。例如,我们可以使用 toHaveBeenCalled 方法来测试函数被调用了一次:
expect(spy).toHaveBeenCalled();
如果我们希望测试函数被调用了多次,我们可以将 toHaveBeenCalled 方法与 toHaveBeenCalledTimes 方法结合使用:
expect(spy).toHaveBeenCalledTimes(3);
这将测试函数被调用了三次。我们可以在任何时候调用 spy.mockReset() 方法来重置 spy 对象,从而取消函数的跟踪。
示例代码
以下是一个完整的示例,显示了如何使用 expect 语句来测试函数的调用次数:
-- -------------------- ---- ------- -------- ------ -- - ------ - - -- - --------- ------ -- ------ ----- ------- -- -- - ----- --- - ------------------ ------- ------------- ------------ ------------------------------- ------------------------------------- ------------- ------------ ------------------------------- ------------------------------------- ------------- ------------ ------------------------------- ------------------------------------- ---------------- ---
这个示例定义了一个名为 add 的函数,然后使用 spyOn 方法来跟踪该函数。接下来,我们调用 add 函数三次,并进行相应的断言,测试函数被调用的次数是否符合预期。最后,我们调用 spy.mockReset() 方法来重置 spy 对象,以备后续测试使用。
结论
在 Jest 中,我们可以使用 expect 语句来测试函数被调用的次数是否符合预期。spyOn 方法可以用来跟踪函数的调用,而 toHaveBeenCalled 方法和 toHaveBeenCalledTimes 方法可以用来测试函数被调用的次数。在进行测试时,我们应该以简单,易于维护和易于理解的方式编写测试代码,从而确保我们的代码能够正确地工作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/675164ce8bd460d3ad894988