在TDD中有两个概念:虚假对象和模拟对象.如果要测试的类与其他类或对象或数据库交互,则使用这两个概念...
我的问题是:两者有什么区别?我什么时候可以使用它们中的每一个?
编辑: 我找到了这个答案: 假装,嘲弄和剔除有什么区别?
但是我仍然对这两者之间的区别感到困惑:他们都创建了组件的实现,并为Fake实现了轻量级.但是,如果是假的话,"快捷方式"的"轻量级实施"是什么意思?Mock对象的工作方式与真实对象的工作方式有何区别?
例如,一个假的实现DataSet只会返回一组静态数据。模拟几乎是一个完整的实现,能够根据输入生成各种数据集。如果您模拟了数据层,您将能够针对模拟执行命令对象,并且它足够强大,可以使用“有效”语句返回数据,或者使用无效语句抛出异常。所有这些都无需实际连接到数据库或文件。
至于模拟和真实之间的区别,通常在模拟一个类时,您会创建一个工厂对象,默认情况下返回真实对象,但是当您编写测试时,您可以告诉它返回特定的模拟类。模拟类要么实现与真实对象相同的接口,要么使用模仿底层真实类的包装类,但允许关键部分进行依赖项注入以生成数据,而无需进行外部调用。
| 归档时间: |
|
| 查看次数: |
4043 次 |
| 最近记录: |