1
我有一個抽象類(我們稱之爲AbstractOutputter
)。當我從它派生時,我調用派生類構造函數中的受保護方法。moq:如何在生成的代理中設置構造函數的行爲?
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/
我想起訂量創造了我一個類繼承自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
的實際類,以便進行單元測試?