如何告诉Jest空间实际上是空间?
鉴于代码:
import { getLocale } from './locale';
export const euro = (priceData: number): string => {
const priceFormatter = new Intl.NumberFormat(getLocale(), {
style: 'currency',
currency: 'EUR',
});
return priceFormatter.format(priceData);
}
export default null;
以及相关测试:
import { euro } from './currency';
test('euro', () => {
expect(euro(42)).toBe("42,00 €");
});
Jest 说:
即使我将 Jest 的预期结果复制粘贴到我的断言中,错误仍然相同。
所以问题是:为什么是地狱?:-D
回答
它不是空格(不同的 ascii 代码/unicode)。根据一个关于字符串比较不正确的笑话问题 Intl.NumberFormat使用了不间断空格。
正如在类似问题的回答中指出的那样:
NumberFormat 使用小的不间断空格 (
u202f) 作为千位分隔符,并在货币 (xa0) 之前使用正常的不间断空格。
所以你希望这个测试断言:
"42,00xa0€"