Jest Mock 函数和 Sinon 间谍有什么区别

What is the difference between Jest Mock functions and Sinon spies

我正在用 Jest 模拟一个函数,文档说它们确实是 'spies'。我也看到了 SinonJS 中间谍的使用,但我找不到两者之间的明显区别。如果它们服务于相同的目的,是否有任何理由选择其中之一?

Jest Mock Functions

SinonJS

两者的主要行为是一样的,都是可以记住调用的函数。因此,对于两者,您都可以计算出它们被调用的频率和参数。 Sinon 有一个更广泛的 API 可以在间谍上测试的内容,它有一个 API 可以用间谍替换对象中的函数。

我在使用 Sinon Vs Jest 时发现了一个警告。 在我的例子中,我想模拟整个模块并检查它是否是从我正在测试的主要函数调用的:

parent func(){  // The func my test was about
   childFunc() // The call I tried to mock and check if it was called.
...

,我尝试使用 Sinon.spy(module, 'default'),但一直抛出错误,提示找不到 'default'。 当你想模拟函数的结果或你有函数属性时,stub、spy 和 mock 似乎都很好。在我的例子中,切换到 jest 非常简单,只需使用

就可以实现我所需要的

jest.mock('./module')