我有这样的事情:
public class SomeClass
{
protected ISomeInterface SomeProperty
{
get { return SomeStaticClass.GetSomeInterfaceImpl(); }
}
public void SomeMethod()
{
// uses SomeProperty in calculations
}
}
我如何测试SomeMethod,使用Rhino Mocks模拟SomeProperty?我正在考虑获取访问器,使用IL重写访问器,只是为了返回模拟代理。听起来有多疯狂?
答案 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();
}