Javascript 在使用Jest进行测试时,如何正确设置本地货币?

Javascript 在使用Jest进行测试时,如何正确设置本地货币?,javascript,unit-testing,testing,internationalization,jestjs,Javascript,Unit Testing,Testing,Internationalization,Jestjs,在Jest中测试货币转换时,我没有得到正确的转换 我的测试: expect(新的Intl.NumberFormat('pt-BR',{style:'currency',currency:'BRL'}).format(50.00)).toBe('R$50,00'); //预期值为: //“50,00雷亚尔” //收到: //“R$50.00”可能在巴西使用逗号符号,来分隔十进制数字。而不是点符号。 这是指向世界地图的链接,它指明了哪个国家,使用哪个十进制指标。 可能在巴西使用逗号符号,来分隔十进

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

我的测试:

expect(新的Intl.NumberFormat('pt-BR',{style:'currency',currency:'BRL'}).format(50.00)).toBe('R$50,00');
//预期值为:
//“50,00雷亚尔”
//收到:

//“R$50.00”
可能在巴西使用逗号符号
来分隔十进制数字。而不是点符号
。 这是指向世界地图的链接,它指明了哪个国家,使用哪个十进制指标。

可能在巴西使用逗号符号
来分隔十进制数字。而不是点符号
。 这是指向世界地图的链接,它指明了哪个国家,使用哪个十进制指标。

更新:Node.js现在提供完整的ICU


原始答案:

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

因此,对于,我们必须设置完整的icu参数

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

现在测试是正确的。

更新:Node.js现在提供完整的ICU


原始答案:

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

因此,对于,我们必须设置完整的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之前,您需要找到一些方法来动态设置
节点\u ICU\u数据。也许这个链接会有所帮助。我最终使用了NPM的cross env,然后为我们的舞台和制作服务器设置了以下内容:
cross env NODE_env=production NODE--icu data dir=NODE_modules/full icu-r esm src/server/index.js
这非常有效。然后在您的本地开发环境中,只需将以下内容添加到.env:
NODE\u ICU\u DATA=NODE\u modules/full ICU
在jest安装文件中有什么方法可以做到这一点吗?@KellyMilligan我不知道这是怎么可能的。在Node.js加载之前,我们得到了一个关于ICU的显式参数。在Jest配置中,您正在声明要在Node.js之后加载的内容…@JasonRice问得好。在执行jest之前,您需要找到一些方法来动态设置
节点\u ICU\u数据。也许这个链接会有所帮助。我最终使用了NPM的cross env,然后为我们的舞台和制作服务器设置了以下内容:
cross env NODE_env=production NODE--icu data dir=NODE_modules/full icu-r esm src/server/index.js
这非常有效。然后在本地开发环境中,只需将以下内容添加到.env:
NODE\u ICU\u DATA=NODE\u modules/full ICU