我正在尝试格式化DateTime
,但没有将属性更改为string
的类型。
我的财产如下DateTime DateApplicationReceived = FormatDateTime();
我已经做了一个小功能,可以将我的string
解析为DateTime
类型。
private static DateTime FormatDateTime()
{
var format = DateTime.UtcNow.ToString("G");
var dateTime = DateTime.Parse(format);
return dateTime;
}
让我们说日期和时间现在为:16/01/2019 15:30:00。我使用NUnit通过执行以下断言来测试我的功能是否正常工作:
public void ConvertsTime()
{
var sut = DateApplicationReceived;
Assert.That(sut, Is.EqualTo("16/01/2019 15:30:00"));
}
我的测试失败。预期结果将忽略(G的)格式,并将其显示为其他区域性2019-01/16
。
为什么要这样做?我明确给出了一种格式,并且更改文化变体不会似乎起作用。
答案 0 :(得分:1)
DateTime
对象没有格式。
所以这里的代码没用:
var format = DateTime.UtcNow.ToString("G");
var dateTime = DateTime.Parse(format);
这完全等同于
var dateTime = DateTime.UtcNow;
在单元测试中,您应该将DateTime
与DateTime
进行比较,或者将string
与string
进行比较。当前,您正在比较DateTime
和string
。
因此,您应该将代码更改为:
Assert.That(sut.ToString("G"), Is.EqualTo("16/01/2019 15:30:00"));
或
Assert.That(sut, Is.EqualTo(DateTime.Parse("16/01/2019 15:30:00")));