gpt4 book ai didi

angular - Angular 中的 Mock vs Spy

转载 作者:太空狗 更新时间:2023-10-29 17:50:02 24 4
gpt4 key购买 nike

我是 Angular 的新手,正在从事单元测试。

我正在尝试确认我对 Fakes vs Spies (spyOn) 的理解。

我的理解是,Fakes 让您可以模拟并非真正从服务返回的数据。它只是模拟,就像它从服务传递一样。

另一方面, spy 让您实际调用或监视服务并返回真实结果以在测试中进行比较。

我说的对吗?

最佳答案

这里有一些信息可以帮助您更好地发挥作用:

Dummy 对象被传递但从未真正使用过。通常它们只是用来填充参数列表。

Fake 对象实际上有工作实现,但通常采用一些捷径,这使得它们不适合生产(内存数据库就是一个很好的例子)。

stub 为测试期间发出的调用提供预制答案,通常根本不响应任何超出为测试编程的内容。

spy 是 stub ,它们还根据调用方式记录一些信息。其中一种形式可能是电子邮件服务,它记录发送了多少条消息。

Mocks 就是我们在这里讨论的内容:预编程的对象形成了预期接收的调用规范。

Long article here

现在您知道了 stub 和 spy 之间的区别,这里有更多信息可以更好地解释它:)

测试替身是一种可以在测试中代替真实物体的物体,类似于电影中特技替身代替 Actor 的方式。这些有时通常都被称为“模拟”,但区分不同类型的测试替身很重要,因为它们都有不同的用途。最常见的测试替身类型是stubs、mocksfakes

stub 没有逻辑,只返回您告诉它返回的内容。当您需要一个对象返回特定值以使您的被测代码进入特定状态时,可以使用 stub 。虽然手动编写 stub 通常很容易,但使用模拟框架通常是减少样板文件的便捷方式。

模拟 对其调用方式有预期,如果不以这种方式调用,测试应该会失败。模拟用于测试对象之间的交互,并且在没有其他可见状态更改或返回结果可以验证的情况下很有用(例如,如果您的代码从磁盘读取并且您希望确保它不会做超过一次磁盘读取,您可以使用模拟来验证执行读取的方法是否仅调用一次)。

伪造 不使用模拟框架:它是 API 的轻量级实现,其行为类似于真实实现,但不适合生产(例如内存数据库)。当您不能在测试中使用真实的实现时(例如,如果真实的实现太慢或者它通过网络进行通信),可以使用假货。您不需要经常编写自己的伪造品,因为伪造品通常应该由拥有真实实现的人员或团队创建和维护。

Code examples here .

关于angular - Angular 中的 Mock vs Spy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44074764/

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