我有一个抽象类(我们称之为AbstractOutputter
)。当我从它派生时,我在派生类的构造函数中调用一个受保护的方法。
抽象输出
public abstract class IOutputter<T>
{
protected void Write(Func<T, string> output)
{
...
}
}
派生类
public class WotsitOutputter: AbstractOutputter<Wotsit>
{
public WotsitOutputter()
{
Write(x => x.Property1.ToString());
Write(x => x.Property2.ToString());
}
}
该模式与在 FluentValidation 中创建验证器类相同:
http://fluentvalidation.codeplex.com/
我希望 Moq 为我创建一个派生自 . 的类AbstractOutputter
,以便对它如何响应对 . 的各种调用排列进行单元测试Write()
。我需要执行以下操作:
Mock<AbstractOutputter<Wotsit>> mockOutputter = new Mock<AbstractOutputter<Wotsit>>();
// Instruct Moq to make various calls to protected method in constructor of mock class
是否有可能做到这一点?我可以以某种方式告诉 Moq 在它创建的代理的构造函数中执行某些操作吗?AbstractOutputter
或者我是否需要为单元测试定义真正的类?