Jest Mock 函数和 Sinon 间谍有什么区别
What is the difference between Jest Mock functions and Sinon spies
我正在用 Jest 模拟一个函数,文档说它们确实是 'spies'。我也看到了 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')
我正在用 Jest 模拟一个函数,文档说它们确实是 'spies'。我也看到了 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')