使用构造函数模拟对象 - Rhino Mocks

时间:2009-08-18 14:25:54

标签: c# rhino-mocks

如何使用Rhino Mocks使用构造函数模拟对象?

例如,如何嘲笑这个对象......

public class Foo : IFoo
{
    private IBar bar;
    public Foo (IBar bar)
    {
        this.bar = bar
    }

    public DoSomeThingAwesome()
    {
       //awesomeness happens here
    }

}

3 个答案:

答案 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成员都是虚拟成员,否则它不会真正起作用。