【发布时间】:2012-06-28 03:18:48
【问题描述】:
我知道有人问过类似的问题,但我没有找到明确的解决方案。我试图从一个大班模拟一个私人领域。私有字段在一些较早的方法中被实例化,我正在尝试对引用该字段的后一种方法进行单元测试。
所以我在课堂上有一个较早的方法:
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。
标签: c# unit-testing moq rhino-mocks nmock