gpt4 book ai didi

unit-testing - 假对象与模拟对象

转载 作者:行者123 更新时间:2023-12-03 14:33:08 25 4
gpt4 key购买 nike

在 TDD 中有两个概念:假对象和模拟对象。这两个概念用于您要测试的类与其他类或对象或数据库交互的情况......

我的问题是:两者有什么区别?我什么时候可以使用它们中的每一个?

编辑:
我找到了这个答案:
What's the difference between faking, mocking, and stubbing?

但是我仍然对两者之间的区别感到困惑:
他们都创建了组件的实现,并为 Fake 提供了轻量级的实现。但是,在假货的情况下,“快捷方式”的“轻量级实现”是什么意思?
模拟对象的工作方式与真实对象的工作方式有什么区别?

最佳答案

DataSet 的假实现例如,将简单地返回一组静态数据。模拟几乎是一个完整的实现,能够根据输入生成各种数据集。如果您正在模拟您的数据层,您将能够针对模拟执行您的命令对象,并且它足够强大,可以使用“有效”语句返回数据,或者使用无效语句抛出异常。所有这些都没有实际连接到数据库或文件。

至于 mock 和 real 之间的区别,通常在 mock 一个类时,你会创建一个工厂对象,默认情况下返回真实对象,但是当你编写测试时,你可以告诉它返回一个特定的 mock 类。模拟类要么实现与真实对象相同的接口(interface),要么使用模仿底层真实类的包装类,但允许对关键部分进行依赖注入(inject)以生成数据,而无需进行外部调用。

关于unit-testing - 假对象与模拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34288425/

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