2012-09-10 56 views
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的實際類,以便進行單元測試?

回答

0

我打算把它放在牀上:我得出結論,Moq不能做到這一點。

最後,我只是爲了測試而定義了一些簡單的AbstractOutputter<Wotsit>實現。

相關問題