Jest 异常:Warning: expect(...).toHaveBeenCalled() 接收了一个参数,但这个参数不是一个 mock 函数

在使用 Jest 进行测试时,我们经常需要使用 mock 函数来模拟一些操作。在测试时,我们可能会遇到这样的警告提示:

这个警告提示出现的原因是我们没有使用正确的方式来传递我们的 mock 函数。

什么是 mock 函数

在 Jest 中,mock 函数是一种用于模拟函数调用的方式。我们可以使用 Jest 提供的 jest.fn() 方法来创建一个 mock 函数,该方法会返回一个模拟函数,我们可以对它进行各种操作。

我们创建一个 mock 函数的示例代码如下:

为什么要使用 mock 函数

在进行单元测试时,我们可能需要模拟一些方法或者函数的调用。为了不改变这些方法或者函数的实际实现,我们可以使用 Jest 提供的 mock 函数来模拟这些方法或者函数的调用,从而能够更好地进行测试。

如何避免遇到上述警告提示

当我们在测试中使用 expect(...).toHaveBeenCalled() 这个断言时,我们需要将我们的 mock 函数传递进去作为参数。

例如,下面的代码就可以避免上述警告提示:

如何诊断上述警告提示

当我们遇到上述警告提示时,我们需要检查目标函数是否被正确地 mock 了。通常情况下,我们可以通过查看测试代码,找到未正确 mock 的函数,并使用 jest.fn() 方法进行 mock。

我们还可以通过在 Jest 配置文件中启用 verbose 模式,从而获取更详细的信息。

总结

在使用 Jest 进行测试时,使用 mock 函数进行模拟是一种比较常用的做法。当我们遇到了上述 Warning 消息时,需要检查是否未正确传递 mock 函数。使用 Jest 提供的 mock 函数能够更好地进行单元测试,帮助我们测试我们的代码是否符合预期。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652cf8587d4982a6ebe7aaf1


纠错
反馈