我正在试图弄清楚为什么我的单元测试失败(以下是第三个断言):
var date = new DateTime(2017, 1, 1, 1, 0, 0);
var formatted = "{countdown|" + date.ToString("o") + "}";
//Works
Assert.AreEqual(date.ToString("o"), $"{date:o}");
//Works
Assert.AreEqual(formatted, $"{{countdown|{date.ToString("o")}}}");
//This one fails
Assert.AreEqual(formatted, $"{{countdown|{date:o}}}");
据我所知,这应该能正常工作,但是看起来它没有正确传递格式参数,代码中只显示为{countdown|o}
。有任何想法这是为什么失败了吗?
{{countdown|**{**date:o}}**}
,括号之间的空格使其计算为内部括号{{countdown|**{**date:o**}**_}}
。 - EqualskAssert.AreEqual(formatted, $"{{{$"countdown|{date:o}"}}}");
。 - Mikko Viitalao
被解释为自定义日期时间格式的一部分。由于它不是有效的格式说明符,因此它只是被复制到输出中。请参阅(自定义日期和时间格式字符串文档页面)。 - Leonid Vasilev