简体   繁体   English

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

[英]Mock an object with a constructor - Rhino Mocks

How do I mock an object with a constructor using Rhino Mocks? 如何使用Rhino Mocks使用构造函数模拟对象?

For example how would this object be mocked... 例如,如何嘲笑这个对象......

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

    public DoSomeThingAwesome()
    {
       //awesomeness happens here
    }

}

You don't mock Foo - you mock IFoo . 你不模仿Foo - 你嘲笑IFoo To test Foo itself, you mock IBar and pass the mock into the constructor. 要测试Foo本身,您可以模拟IBar并将模拟传递给构造函数。

You should try to avoid having things which rely on IFoo explicitly constructing instances of Foo : they should either be given a factory if IFoo somehow, or have an IFoo explicitly passed to them. 你应该尽量避免让依赖于IFoo东西显式地构造Foo实例:如果IFoo以某种方式被赋予工厂,或者将IFoo明确地传递给它们。

var myIFoo = MockRepository.GenerateStub<IFoo>();

你可以检查发生的真棒

myIFoo.AssertWasCalled(f => f.DoSomethingAwesome());

It's been awhile since I used Rhino but I believe you can do: 自从我使用Rhino以来已经有一段时间,但我相信你可以做到:

mockRespository.StrictMock<Foo>( ibarVariable )

However it won't really work unless all of Foo's members are virtual. 然而,除非Foo的所有成员都是虚拟的,否则它不会真正起作用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM