我知道一個類似的問題已被問到,但我還沒有找到明確的解決方案。我試圖嘲笑一個大班的私人領域。私人領域得到實例在一些較早的方法,我試圖單元測試引用該領域的後一種方法。嘲笑私人領域
所以我有一個較早的方法在我的課:
public bool validateAll(ref DataEntry[] oEntries, string sMediaPlanId, ITemplateGenerator oTempGen)
{
...
// private field that I am trying to mock
this._sMediaPlanObjective = (MPWrapper.Instance).getMediaPlanObjective(sMediaPlanId);
...
}
我試圖單元測試引用私有字段的方法:
public bool validateFlightObjective(ref MPDataEntry oEntry)
{
...
string entryFlightObjective = oEntry.getFlightObjective();
string mediaPlanObjective = this._sMediaPlanObjective;
if (entryFlightObjective != mediaPlanObjective)
{
return false;
}
...
return true;
}
假設我有一個大類,這只是我想測試的一種方法,有沒有可能的方法來模擬這個私人領域?我缺少一些基本的東西,還是應該考慮其他方法?
正如答案中所述,您可以(應該)通過一些重構努力來避免這種情況。如果你仍然不想這樣做,你可以嘗試一個更強大的模擬框架,如Typemock Isolator或者Moles。 – seldary