c# - 如何在 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
}
解决方案
在编写单元测试时,你应该对实际结果和预期结果有一个清晰的认识。您的测试应如下所示。
总是问自己,给定一些输入,预期的输出是什么?
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);
}
推荐阅读
- amazon-web-services - 是否可以将一天中的时间作为 AWS Cloudwatch 中的指标?
- r - 如何不允许错误术语在 SEM 中与 lavaan 相关联
- javascript - JavaScript Promise:在链式函数中捕获错误
- zend-framework - 这个结果是只向前的结果集,不支持向前移动后调用rewind()
- oracle - SSIS 2017 包成功完成,但没有来自 ole dB oracle 源的 ole db oracle 目标的所有数据
- javascript - 我如何查询firestore中的两个where语句
- openedge - pow(2,39) 附近的数字如何对于 64 位整数值来说太大了?
- javascript - 预加载带有散列名称的字体文件
- linux - 如何使用 perl-rename 替换 . 使用 _ 在 linux 上递归,扩展除外
- spring - 如何从自定义 RestTemplate 实现中检索附加的授权标头的访问令牌?