我要测试排毒警报消息,该消息使用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”。 我不知道为什么会发生错误,有人可以帮助我吗? 谢谢
答案 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()