例如:
public class ThirdPartyClass
{
public void DoSomething() { ... }
}
// Mock framework generated class
public class MockThirdPartyClass : ThirdPartyClass
{
public new void DoSomething() { // Mock user's deletegate goes here }
}
我怀疑问题是被测试的类使用基类作为其变量/参数,因此对模拟类'方法的调用转到基本版本而不是阴影版本:
public class MyClass
{
private ThirdPartyClass tpc;
public MyClass() { }
public MyClass(ThirdPartyClass tpc)
{
this.tpc = tpc;
}
public void MyClassDoesSomething()
{
this.tpc.DoSomething(); // Bypasses MockThirdPartyClass shadow method
}
这是对的吗?
答案 0 :(得分:1)
是的,这是正确的。
被测试的类永远不会引用Proxy类 - 它总是会引用代理的基类(即真正的类)。