我知道一个类似的问题已被问到,但我还没有找到明确的解决方案。我试图嘲笑一个大班的私人领域。私人领域得到实例在一些较早的方法,我试图单元测试引用该领域的后一种方法。嘲笑私人领域
所以我有一个较早的方法在我的课:
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