创建假对象

时间:2010-09-24 02:14:25

标签: c# object language-agnostic mocking

我只是很好奇,更喜欢看S / O上的广告,点击它,然后从Google Code下载...

为什么有人想/需要创建假对象?我不反对,或者不认为它有任何问题,我真的不知道。

谢谢!

4 个答案:

答案 0 :(得分:1)

你指的是模拟对象吗?如果是这样,我将无法改进Wiki article

  
    

“在面向对象的编程中,模拟对象是以受控方式模仿真实对象行为的模拟对象。计算机程序员通常会创建一个模拟对象来测试其他对象的行为,其方式与汽车设计师使用碰撞测试虚拟来模拟人类在车辆撞击中的动态行为。在单元测试中,模拟对象可以模拟复杂的,真实的(非模拟)对象的行为,因此当真实对象不切实际时非常有用或不可能纳入单元测试。“

  

答案 1 :(得分:1)

以下是一个例子:

假设您必须测试您的EmailService类中是否正在调用名为SendEmail()的方法。您可以使用真实对象对此进行测试,但您的SendEmail()方法实际上可能包含用于发送电子邮件的生产代码。您可能不希望在测试时执行此操作,因此您可以通过模拟或伪造对象来测试是否正在调用SendEmail()。通过这种方式,您可以在不需要实际发送电子邮件的情况下调用SendEmail()。更进一步,假设您必须测试SendEmail()是否仅以特定时间间隔发送电子邮件,例如在6到8p.m之间。你打算怎么测试呢?您可以更改系统时钟,但是为什么要伪造EmailService的当前DateTime以测试SendEmail()

答案 2 :(得分:0)

因为有时它太昂贵,或者使用真实物体不合适。

最常用的是单元测试框架,您希望单独测试组件,这意味着为您不想测试的内容提供存根。

另一个常见用途是在运行时删除功能,而无需在任何地方编写代码来测试是否启用了功能。记录是一个相当典型的例子。

答案 3 :(得分:0)

我经常制作一些“Null Objects”,因为我称之为具有其他对象的接口并且什么都不做。也许那就是你在谈论的。当您不希望每次都要求对象为空时,此对象非常有用。