gpt4 book ai didi

reactjs - jest 中的 jest.fn() 和 jest.spyOn() 方法有什么区别?

转载 作者:行者123 更新时间:2023-12-03 13:17:39 35 4
gpt4 key购买 nike

我正在为我的 react 项目编写单元测试用例,并使用 Jest 和 enzyme 来编写测试用例。我已阅读 Jest 文档

https://jestjs.io/docs/en/jest-object.html#jestspyonobject-methodname

它解释了jest.spyOn()方法,但我不完全理解。

所以我想了解更多关于我们应该使用 jest.fn() 的具体位置以及我们应该/必须使用 jest.spyOn() 的具体位置。如果能用这两种方法的示例来解释,那就会有很大的帮助。

谢谢

最佳答案

我对react/frontend项目中这两个函数的简单理解如下:

jest.fn()

  • 您想要模拟一个函数,但实际上并不关心该函数的原始实现(它将被 jest.fn() 覆盖)
  • 通常您只是模拟返回值
  • 如果您想在测试中删除对后端(例如调用后端 API 时)或第三方库的依赖项,这非常有用
  • 如果您想进行真正的单元测试,它也非常有帮助。您不关心您测试的单元调用的某些函数是否正常工作,因为这不是它的责任的一部分。

jest.spyOn()

  • 该函数的原始实现与您的测试相关,但是:
    • 您想要仅针对特定场景添加自己的实现,然后通过 mockRestore() 再次重置它(如果您只使用 jest.spyOn() 而不使用进一步模拟它,默认情况下它仍然会调用原始函数)
    • 您只想查看该函数是否被调用
    • ...
  • 我认为这对于集成测试特别有帮助,但不仅仅只对集成测试有用!

(好博文:https://medium.com/@rickhanlonii/understanding-jest-mocks-f0046c68e53c)

关于reactjs - jest 中的 jest.fn() 和 jest.spyOn() 方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57643808/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com