首页 > 解决方案 > 如何在 xUnit 中测试 API 方法的 UTC 日期(以毫秒为单位)

问题描述

我正在为 Web API 项目进行 xUnit 测试。其中一种方法以毫秒为单位采用UTC日期,我如何测试确认API方法的输入参数是有效的毫秒。我有逻辑将毫秒转换为日期

public static DateTimeOffset DateTimeCalculation(long milSec)
{
        DateTimeOffset epochTime = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
        return epochTime.AddMilliseconds(milSec);
}

测试方法

   [Fact]
    public async Task GetPersonMethod_MustTake_DateParameter_InMilliSecond()
    {
        //Arrange
        var fixture = new Fixture();
        long startDateTimeUtc = 1626994800000;


        DateTimeOffset starTimeOffset = DateTimeCalculationHelper.DateTimeCalculation(startDateTimeUtc);

        //Act



        //Assert
    }

标签: c#.netxunitautofixture

解决方案


在编写单元测试时,你应该对实际结果和预期结果有一个清晰的认识。您的测试应如下所示。

总是问自己,给定一些输入,预期的输出是什么?

public void GetPersonMethod_MustTake_DateParameter_InMilliSecond()
    {
        //Arrange
        long startDateTimeUtc = 1626994800000;

        //Act
        DateTimeOffset starTimeOffset = DateTimeCalculationHelper.DateTimeCalculation(startDateTimeUtc);

        //Assert
        string actual = starTimeOffset.ToString();
        string expected = "22/07/2021 11:00:00 PM +00:00";
        Assert.Equal(expected, actual);
    }

推荐阅读