我有这样的场景:
form = MockRepository.GenerateMock<IAddAddressForm>();
mediator = new AddAddressMediator(form);
中介是被测试的真实对象,需要能够为“表单”对象设置值。
但我能看到为表单对象设置值的唯一方法是:
form.Stub(x=>x.FirstName).Return(item.FirstName)
我不想在我的真实代码中这样做。
我错过了嘲笑的意思吗?
答案 0 :(得分:1)
Stubs已经内置了对财产行为的支持。如果您不使用存根,则可以使用PropertyBehaviour()方法获得类似的效果。
在调解器中,您应该正常使用form
对象 - 它不应该知道它已被交给假对象。
此代码:
form.Stub(x=>x.FirstName).Return(item.FirstName)
不应该在您的真实对象中,但可能是 test 的一部分,以设置您对如何使用模拟对象的期望。
修改强>
从你提供的内容来看,我无法判断你是否“错过了嘲笑点”。其基本目的是提供一种方法来测试依赖于这些依赖项的依赖项的代码。看看Martin Fowler的文章“Mocks Aren't Stubs”,以及Rhino Mocks documentation的使用指南部分。