如何使用Rhino Mocks使用构造函数模拟对象?
例如,如何嘲笑这个对象......
public class Foo : IFoo
{
private IBar bar;
public Foo (IBar bar)
{
this.bar = bar
}
public DoSomeThingAwesome()
{
//awesomeness happens here
}
}
答案 0 :(得分:14)
你没有模仿Foo
- 你嘲笑IFoo
。要测试Foo
本身,请模拟IBar
并将模拟传递给构造函数。
你应该尽量避免依赖于IFoo
明确构建Foo
实例的东西:如果IFoo
以某种方式出现,他们应该被赋予工厂,或者IFoo
明确传递给他们。
答案 1 :(得分:4)
var myIFoo = MockRepository.GenerateStub<IFoo>();
你可以通过
检查发生了什么myIFoo.AssertWasCalled(f => f.DoSomethingAwesome());
答案 2 :(得分:2)
我使用Rhino已经有一段时间,但我相信你可以做到:
mockRespository.StrictMock<Foo>( ibarVariable )
然而,除非所有Foo成员都是虚拟成员,否则它不会真正起作用。