Jest にスペースが実際にスペースであることを教えるにはどうすればよいでしょうか? 質問する

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 が警告しているスクリーンショット。エラーは、Intl コンポーネントによって生成された数値と通貨の間のスペースにあります。

Jest の期待される結果をアサートにコピーして貼り付けても、エラーは同じです。

それで質問です: 一体なぜ? :-D

ベストアンサー1

このテストでは次のことを主張します:

"42,00\xa0€"

スペースではありません(ASCIIコード/Unicodeが異なります)。文字列の比較が正しくないという Jest の問題 Intl.NumberFormat改行不可スペースを使用します。

そして指摘したように同様の質問の回答で:

NumberFormat では、千単位の区切りに小さな改行不可スペース ( \u202f) を使用し、通貨の前には通常の改行不可スペース ( \xa0) を使用します。

おすすめ記事