Intl.NumberFormat работает некорректно в модульном тесте Jest? - PullRequest
0 голосов
/ 14 сентября 2018

Сайт Mozilla сообщает:

var number = 123456.789;

console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' })
.format(number));

// expected output: "123.456,79 €"

Но в моем модульном тесте Jest я получаю в качестве вывода € 123,456.79, что неправильно для fr-FR локали в соответствии с моим примером и примером Mozilla.

Я пытался загрузить полифиллы и данные локали, но, похоже, это не решило проблему

import 'intl';
import 'intl/locale-data/complete';
import 'intl/locale-data/jsonp/fr';
import 'intl/locale-data/jsonp/fr-FR';
import 'intl/dist/Intl.complete';

Есть идеи, что может быть не так?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Отвечая на мой вопрос.

Я думаю, это потому, что мы должны предоставить данные о локалях / ICU для узла. Последующая загрузка polyfill не исправляет API-интерфейс Intl, который уже присутствует в узле.

Не тестировал дальше, но эти ссылки могут быть полезны:

Шутка: тест Intl.DateTimeFormat https://github.com/nodejs/node/blob/master/doc/api/intl.md

0 голосов
/ 14 сентября 2018

Похоже на несоответствие между поведением узла и браузера. Я думаю, что polyfills, возможно, не работал, потому что ваш узел имеет поддержку Intl. И есть проверка, чтобы избежать переопределения нативной реализации. Попробуйте использовать IntlPolyfill, оно должно быть доступно. Я также попробовал узел 6.14.4 и получил €123,456.79: D

...