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

时间:2018-09-13 07:46:25

标签: 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(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>)

然后我将以下代码添加为笑话:

{
  "preset": "react-native",
  "transformIgnorePatterns": [
    "/node_modules/(?!(react-native(.*)?/|native-base(.*)?/|react-navigation/))"
  ]
}

并再次出现错误:

 Validation Error:

  Module <rootDir>/node_modules/react-native/jest/setup.js in the setupFiles option was not found.

实际上,我确认node_modules / react-native / jest中存在“ setup,js”。 我不知道为什么会发生错误,有人可以帮助我吗? 谢谢

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我通过导入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()