我仍在试图弄清楚 Microsoft Fakes 中的垫片的正确用途。我知道它适用于运行时方法拦截器,它允许您为几乎任何方法提供自己的实现,但让我问一个更单元测试类型的问题。在下面的方法中,我是否应该填充 PUBLIC STATIC 方法并存根可覆盖的方法 base.ResolveDate(comparisonSeries, targetDate)?我应该只测试里面ResolveDate()
的东西而不是别的吗?这似乎是您使用单元测试正确测试方法的方式。只需测试该方法,除非该方法嵌套了私有方法调用,在这种情况下,您将通过这些私有方法运行单元测试(根据 Roy Osherove 的“单元测试艺术”,您不会独立测试私有方法)。
public override DateTime ResolveDate(ISeries comparisonSeries, DateTime targetDate)
{
if (comparisonSeries == null)
{
throw new ArgumentNullException("comparisonSeries");
}
switch (comparisonSeries.Key)
{
case SeriesKey.SomeKey1:
case SeriesKey.SomeKey2:
case SeriesKey.SomeKey3:
case SeriesKey.SomeKey4:
case SeriesKey.SomeKey5:
return DateHelper.PreviousOrCurrentQuarterEnd(targetDate);
}
return base.ResolveDate(comparisonSeries, targetDate);
}