2

我有这样的场景:

 form = MockRepository.GenerateMock<IAddAddressForm>();
 mediator = new AddAddressMediator(form);

中介是被测试的真实对象,需要能够为“表单”对象设置值。

但是我可以看到为表单对象设置值的唯一方法是这样的:

  form.Stub(x=>x.FirstName).Return(item.FirstName)

我不想在我的真实代码中这样做。

我错过了模拟的意义吗?

4

1 回答 1

1

存根内置了对属性行为的支持。在不使用存根的情况下,可以使用PropertyBehaviour()方法获得类似的效果。

在中介内,您应该form正常使用该对象——它不应该知道它已收到一个假对象。

这段代码:

form.Stub(x=>x.FirstName).Return(item.FirstName)

不应该在您的真实对象中,但可能是您测试的一部分,以设置您将如何使用模拟对象的期望。

编辑:

根据您提供的内容,我无法判断您是否“错过了模拟的要点”。基本目的是提供一种方法来测试具有独立于这些依赖项的依赖项的代码。查看 Martin Fowler 的文章“ Mocks Aren't Stubs ”,以及Rhino Mocks 文档的使用指南部分。

于 2009-08-18T23:58:32.173 回答