I am working on .NET 5 unit tests for DateTimeUTC. My following tests fails with fraction of millisecond. I am initializing expectedDateTimeUtcNow = DateTimeOffset.UtcNow and then using expectedDateTimeUtcNow to convert to millisecond as SUT to test my method where I pass hardcoded long millisecond value then test pass not sure what I am missing
[Fact]
public void ConvertDateTimeToUTC_MustTakeDateTimeParameter_InMilliSecond()
{
//Arrange
long startDateTimeUtc = 1626991200000; //2021-07-22 22:00:00
var expectedDateTime = DateTimeOffset.FromUnixTimeMilliseconds(startDateTimeUtc);
var expectedDateTimeUtcNow = DateTimeOffset.UtcNow;
var dateTimeUtcNowMiliSec = expectedDateTimeUtcNow.ToUnixTimeMilliseconds();
//Act
DateTimeOffset utcConvertedDateTime = DateTimeCalculationHelper.ConvertDateTimeToUTC(startDateTimeUtc);
DateTimeOffset actualDateTimeUtcNow = DateTimeCalculationHelper.ConvertDateTimeToUTC(dateTimeUtcNowMiliSec);
//Assert
Assert.Equal(expectedDateTime, utcConvertedDateTime);
Assert.Equal(expectedDateTimeUtcNow, actualDateTimeUtcNow);
}
SUT
public static DateTimeOffset ConvertDateTimeToUTC(long utcDateTimeInMilliSec)
{
var dateTimeUtc = DateTimeOffset.FromUnixTimeMilliseconds(utcDateTimeInMilliSec);
return dateTimeUtc;
}