【发布时间】:2020-01-08 11:28:28
【问题描述】:
我围绕字符串转换和货币编写了一些单元测试。
我正在测试字符串是否以我期望的格式返回,给定 CultureInfo 方法已通过。
public string GetOverspendAmount(double _amount, CultureInfo cultureInfo)
{
return amount.ToString("N", cultureInfo);
}
我正在使用以下调用对这段代码进行单元测试 -
double amount = 1000000;
CultureInfo ci = new CultureInfo("fr-FR", false);
GetOverspendAmount(amount, ci).Should().Be("1 000 000");
但测试失败。预期和实际看起来相同,但是当放入 ascii 转换器时,会显示以下结果
Expected - 1 000 000
49 32 48 48 48 32 48 48 48
Actual - 1 000 000
049 194 160 048 048 048 194 160 048 048 048
它们不是普通空间,但我想知道它们是什么,为什么它们不只是普通空间?
【问题讨论】:
-
为什么不使用Memory window in the Visual Studio debugger 并查看实际的字节值?
-
实际的字符串看起来更像“1 000 000,00”而不是“1 000 000”。
-
好地方,我已经在问题中更正了。这是我试图从我的代码中简化问题的错误
-
如果你进入控制面板 -> 区域 -> 将格式设置为“法语 - 法国” -> 附加设置 -> 查看“数字分组符号”的设置,您可以看到这个特殊的空格字符.这是一个特殊的不间断空格(您可以从下拉列表中选择其他字符)。
标签: c# unit-testing formatting tostring cultureinfo