如何使用Rhino Mocks模拟受保护的计算只读属性?

时间:2013-08-30 19:00:13

标签: c# reflection rhino-mocks

我有这样的事情:

public class SomeClass
{
    protected ISomeInterface SomeProperty
    {
        get { return SomeStaticClass.GetSomeInterfaceImpl(); }
    }

    public void SomeMethod()
    {
        // uses SomeProperty in calculations
    }
}

我如何测试SomeMethod,使用Rhino Mocks模拟SomeProperty?我正在考虑获取访问器,使用IL重写访问器,只是为了返回模拟代理。听起来有多疯狂?

1 个答案:

答案 0 :(得分:0)

您不能在测试中模拟类,而只能依赖于依赖项。因此,如果您使用某种工厂而不是SomeStaticClas并使用SomeClass的构造函数参数注入它,则可以模拟工厂类。

public class SomeClass
{
    public SomeClass(ISomeInterfaceFactory factory)
    {
        this.factory = factory;
    }

    protected ISomeInterface SomeProperty
    {
        get { return factory.GetSomeInterface(); }
    }

    public void SomeMethod()
    {
        // uses SomeProperty in calculations
    }
}

public interface ISomeInterfaceFactory
{
    ISomeInterface GetSomeInterface();
}