我正在使用intl package最新版本0.16.1
创建货币格式的单元测试。
我的格式是:final currencyFormat = NumberFormat.simpleCurrency(locale: 'pt_BR');
我的预期结果是:var expected = r'R$ 1,00';
。然后我通过以下方式将格式器应用于值1.0
:var formatted = currencyFormat.format(1.0)
产生了R$ 1,00
。
当我使用expect(formatted, expected)
测试两个值时,它表明结果不相同。
Expected: 'R$ 1,00'
Actual: 'R$ 1,00'
Which: is different.
Expected: R$ 1,00
Actual: R$ 1,00
^
Differ at offset 2
好吧,我花了一些时间发现两个字符串的符文具有一个字符差异。
预期符文:(82, 36, 32, 49, 44, 48, 48)
格式化的符文:(82, 36, 160, 49, 44, 48, 48)
我的问题是:如果格式化时使用的是不间断空格,那么在没有文档讨论该错误的情况下如何避免该错误?
答案 0 :(得分:0)
直到现在,我实现的唯一方法是将Unicode字符放入期望的字符串:var expected = 'R\$\u{00A0}1,00';
。
这不是一个好的解决方案,因为如果我们在应用程序内部有许多格式化程序并测试所有使用不间断空格的格式器,则必须将期望的值输入ASCII码。