Iドメインロジックにヘルパー機能を有している。なぜDateTimeOffset.AddMonths((DTO)=> dto.AddMonths(1).Date)として(1).Date同じではない
private static DateTimeOffset CalculateNextDate(DateTimeOffset previousDate, TimeUnit timeUnit, int quantity)
{
Func<int, DateTimeOffset, DateTimeOffset> calcMethod;
switch (timeUnit)
{
case TimeUnit.Month:
calcMethod = (i, offset) => offset.AddMonths(i);
break;
// ... [irrelevant] ...
default:
// ... [irrelevant] ...
}
return calcMethod(quantity, previousDate).Date;
}
私のunittestのは、例えば、月を検証してみました:
// Arrange
int monthsToAdd = 1;
var timeUnit = TimeUnit.Month;
var sut = new TimeInterval(timeUnit, monthsToAdd);
var now = DateTimeOffset.Now;
// Act
var result = sut.NextDate(now);
// Assert
var expectedDate = now.AddMonths(1).Date;
Assert.AreEqual(expectedDate, result); // FAILS
結果は1がKEEことができる理由私は理解していない{26/04/2017 0:00:00 +02:00}
ている間expectedDateが{26/04/2017 0:00:00}
であるため、アサートが失敗しますpはオフセットで、もう一方はオフセットします。私は.Date
をDateTimeOffsetにキャストしているのですか? MSDNの説明を見つけることができません...
これだけです!私はコンストラクタの説明を見落としました。 – dampee