3

我有这样的事情:

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

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

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

4

1 回答 1

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();
}
于 2013-09-05T13:07:57.530 回答