【问题标题】:How can I correctly set the local currency when testing with Jest?使用 Jest 进行测试时,如何正确设置当地货币?
【发布时间】:2020-05-12 01:11:36
【问题描述】:

在 Jest 中测试 IntL 货币转换时,我没有得到正确的转换。

我的测试:

expect(new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(50.00)).toBe('R$ 50,00');
// Expected value to be:
// "R$ 50,00"
// Received:
// "R$ 50.00"

我的命令:

jest --config test/unit/jest.conf.js

如何将正确的语言环境配置设置为 Jest?

【问题讨论】:

    标签: javascript unit-testing testing internationalization jestjs


    【解决方案1】:

    更新:完整的 ICU 现在带有 Node.js,since version 13


    原答案:

    这里的挑战是设置 Node.js i18n,Jest 是基于 Node.js 的。

    因此,official Node.js documentation,我们必须设置full-icu参数。

    npm install full-icu
    NODE_ICU_DATA=node_modules/full-icu jest --config jest.conf.js
    

    现在测试是正确的。

    【讨论】:

    • 有没有办法在 jest 设置文件中做到这一点?
    • @KellyMilligan 我不明白这怎么可能。在这里,在加载 Node.js 之前,我们得到了一个关于 ICU 的明确参数。在 Jest 配置中,您正在声明要在 Node.js 之后加载的内容...
    • @JasonRice 好问题。在执行 jest 之前,您需要找到一些方法来动态设置 NODE_ICU_DATA。也许该链接可以帮助stackoverflow.com/questions/9249830/…
    • 我最终使用了 NPM 的 cross-env,然后为我们的阶段和生产服务器设置了以下内容:cross-env NODE_ENV=production node --icu-data-dir=node_modules/full-icu -r esm src/server/index.js 这非常有效。然后在您的本地开发环境中,只需将以下内容添加到您的 .env 中:NODE_ICU_DATA=node_modules/full-icu
    【解决方案2】:

    可能在巴西使用逗号符号, 来分隔十进制数。而不是点号.。 这是指向哪个国家,使用哪个十进制指示符的世界地图的链接。 http://www.statisticalconsultants.co.nz/blog/how-the-world-separates-its-decimals.html

    【讨论】:

    • 谢谢!我考虑过替换字符串。我会寻找更精确的方法。
    猜你喜欢
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 2019-06-03
    • 2018-11-09
    相关资源
    最近更新 更多