次のコードが与えられます:
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 の期待される結果をアサートにコピーして貼り付けても、エラーは同じです。
それで質問です: 一体なぜ? :-D
ベストアンサー1
このテストでは次のことを主張します:
"42,00\xa0€"
スペースではありません(ASCIIコード/Unicodeが異なります)。文字列の比較が正しくないという Jest の問題 Intl.NumberFormat
改行不可スペースを使用します。
そして指摘したように同様の質問の回答で:
NumberFormat では、千単位の区切りに小さな改行不可スペース (
\u202f
) を使用し、通貨の前には通常の改行不可スペース (\xa0
) を使用します。