这个 SO 问题解决了“可以”,但没有显示“如何”。我坚持让它启动并运行。任何人都可以提供一个例子吗?我试过了
public abstract class MyClass
{
public abstract Counter Counter { get; }
public int abstract Foo(int n);
public virtual int Foo(string s)
{
return Foo(Counter.Count(s));
}
}
我想模拟 Foo(string s),这取决于抽象属性 Counter。我想模拟 Foo(string s) 的原因是因为我不想为 Counter 和 Foo(int n) 提供定义,因为验证码只使用了 Foo(string s) 。
方法一:
var sub = Substitute.For<MyClass>();
ShimMyClass.AllInstances.Func1Int32 = ... ; // alternate behavior for testing
VerifyLogic(sub);
方法二:
var sub = Substitute.For<MyClass>();
var shim = new ShimMyClass(sub)
{
Func1Int32 = ... ; // alternate behavior for testing
};
VerifyLogic(shim.Instance);
两者都不起作用,调用原始类代码而不是 shim 代码。谢谢。