Reactjs 如何在排毒中使用react-native-i18n[react-native]

Reactjs 如何在排毒中使用react-native-i18n[react-native],reactjs,react-native,jestjs,e2e-testing,detox,Reactjs,React Native,Jestjs,E2e Testing,Detox,我想测试解毒中的警报消息,消息使用i18n const i18n = require("react-native-i18n"); describe("Example", () => { beforeEach(async () => { await device.reloadReactNative(); }); it("should show hello screen after tap", async () => { await element(

我想测试解毒中的警报消息,消息使用i18n

const i18n = require("react-native-i18n");

describe("Example", () => {
  beforeEach(async () => {
    await device.reloadReactNative();
  });

  it("should show hello screen after tap", async () => {
    await element(by.id("btnLogin")).tap();
    I18n.t(LocaleKeys.errorMsg_invalidUsername);
    await expect(element(by.text(I18n.t(LocaleKeys.errorMsg_invalidUsername)))).toBeVisible();
    // await expect(element(by.text("Please input the email and password."))).toBeVisible();
  });

});
运行测试并获得以下错误

测试套件无法运行

/Users/leogeng/Desktop/studentREP/student-app/node_modules/react-native-i18n/index.js:14
export const getLanguages = () => RNI18n.getLanguages();
^^^^^^

SyntaxError: Unexpected token export

  at ScriptTransformer._transformAndBuildScript (../node_modules/jest-runtime/build/script_transformer.js:305:17)
  at Object.<anonymous> (firstTest.spec.js:1:114)
      at Generator.next (<anonymous>)
并再次获取错误:

 Validation Error:

  Module <rootDir>/node_modules/react-native/jest/setup.js in the setupFiles option was not found.
验证错误:
在setupFiles选项中找不到Module/node\u modules/react native/jest/setup.js。
实际上我确认'setup,js'存在于node_modules/react native/jest中。 我不知道为什么会出错,有人能帮我吗?
谢谢

很可能是因为您使用的是旧版本的
节点
,请尝试更新,看看它是否解决了问题。此外,它与Jest完全无关,如果Jest单元测试没有任何问题,您可能应该恢复修改Jest设置的尝试;无论如何,它不会解决排毒问题


如果您有某些要求或原因迫使您将
节点
保留在特定的旧版本,您可以通过不同的方式执行测试来绕过它:仅为e2e测试设置演示屏幕(甚至仅为e2e创建一个完整的演示项目),在演示屏幕中,您可以使用一个按钮来执行您需要的
i18n
(更改区域设置或任何内容),在
detox
测试中,您可以在测试实际需要的内容之前点击此“演示”按钮。

很可能是因为您使用的是旧版本的
节点
,尝试更新,看看它是否解决了问题。此外,它与Jest完全无关,如果Jest单元测试没有任何问题,您可能应该恢复修改Jest设置的尝试;无论如何,它不会解决排毒问题


如果您有某些要求或原因迫使您将
节点
保留在特定的旧版本,您可以通过不同的方式执行测试来绕过它:仅为e2e测试设置演示屏幕(甚至仅为e2e创建一个完整的演示项目),在演示屏幕中,您可以有一个按钮来执行您需要的
i18n
(更改区域设置或任何内容),在
detox
测试中,您可以在测试实际需要的内容之前点击此“演示”按钮。

我也遇到了同样的问题。我通过导入
i18n js
而不是
react-native-i18n
来解决它

因为
react-native-i18n
不是一个简单的javascript框架,
Detox
无法导入它

但是
react-native-i18n
正在使用
i18n js
,因此您可以毫无问题地访问您的翻译

const I18n = require('i18n-js')

// and then you can use it for your tests
...
await element(by.text( I18n.t('hello') )).tap()

我也有同样的问题。我通过导入
i18n js
而不是
react-native-i18n
来解决它

因为
react-native-i18n
不是一个简单的javascript框架,
Detox
无法导入它

但是
react-native-i18n
正在使用
i18n js
,因此您可以毫无问题地访问您的翻译

const I18n = require('i18n-js')

// and then you can use it for your tests
...
await element(by.text( I18n.t('hello') )).tap()