Moq を使用して、テスト対象のメソッド内の静的メソッド呼び出しをモック化できないことはわかっています。メソッドをリファクタリングしてテストできるようにするには、どうすればよいでしょうか? 基本クラスのメソッドを呼び出すメソッドもありますが、それをリファクタリングする必要がありますか? MS.Fakes や TypeMocks を使用して shim を作成するのではなく、リファクタリングして堅実なコードを記述します。
public override DateTime ResolveDate(ISeries comparisonSeries, DateTime targetDate)
{
if (comparisonSeries == null)
{
throw new ArgumentNullException("comparisonSeries");
}
switch (comparisonSeries.Key)
{
case SeriesKey.R1:
case SeriesKey.R2:
case SeriesKey.R3:
case SeriesKey.R4:
case SeriesKey.R5:
return DateHelper.PreviousOrCurrentQuarterEnd(targetDate);
}
return base.ResolveDate(comparisonSeries, targetDate);
}
[TestMethod]
public void SomeTestMethod()
{
var mockIAppCache = new Mock<IAppCache>();
var mockISeries = new Mock<ISeries>();
ReportFR2 report = new ReportFR2(SeriesKey.FR2, mockIAppCache);
DateTime resolvedDate = report.ResolveDate(mockISeries, DateTime.Now);
//Assert.AreEqual("something", "something");
}