2016-12-04 123 views
0

我的實體setter都是私有的,所以我使用構造函數來初始化我的實體。嘲諷受保護的setter

現在我需要編寫單元測試,我需要實例化多個對象。 「問題」是我不想創建構造函數只是爲了用一些隨機數據實例化我的實體。相反,我想利用C#簡單的方法來做到這一點:

var user = new User() { Name = "John", LastName = "Smith" }; 

一種選擇我認爲是使制定者內部,並設置InternalsVisibleTo。但我不希望其他實體設置這些屬性。

不過我不認爲我可以用Moq來做到這一點。有沒有其他方法可以解決這個問題?

回答

2

如果你的目標只是爲了能夠通過做嘲笑的保護性能,你應該能夠嘲笑他們,如果你做的getter市民:

public int A { get; protected set; }

另一種選擇是擴展類的試圖測試和類的測試版本可以有構造函數或公共方法來設置屬性。

+0

對於第二個選項,只需創建一個從User派生出來的TestUser,然後在那裏添加調用受保護的setter的公共setter。 – zaitsman