如何告诉 Jest 空间实际上是空间?

Sou*_*euh 6 currency number-formatting node.js typescript jestjs

鉴于代码:

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;
Run Code Online (Sandbox Code Playgroud)

以及相关测试:

import { euro } from './currency';

test('euro', () => {
  expect(euro(42)).toBe("42,00 €");
});
Run Code Online (Sandbox Code Playgroud)

Jest 说:

Jest 抱怨字符串不相等的屏幕截图,即使两者看似相同。 错误在于 Intl 组件产生的数字和货币之间的空间。

即使我将 Jest 的预期结果复制粘贴到我的断言中,错误仍然相同。

所以问题是:为什么是地狱?:-D

k0p*_*kus 8

它不是空格(不同的 ascii 代码/unicode)。根据一个关于字符串比较不正确的笑话问题 Intl.NumberFormat使用了不间断空格。

正如在类似问题的回答中指出的那样:

NumberFormat 使用小的不间断空格 ( \u202f) 作为千位分隔符,并在货币 ( \xa0) 之前使用正常的不间断空格。

所以你希望这个测试断言:

"42,00\xa0€"
Run Code Online (Sandbox Code Playgroud)