我正在我的react native expo应用程序中使用react-native-testing-library
(使用该库的第一步)编写一个简单的测试。但是我收到来自react-native
代码库本身内部某个地方的困惑错误。我的代码有问题或者react-native-testing-library
npm库存在错误。
这是一个简单的玩笑测试:
describe("AppTitle", () => {
it("should display applicaton title", () => {
const { getByText } = render(<AppTitle />);
expect(getByText('App Name')).toBeTruthy();
});
});
这是简单的<AppTitle />
组件(只是一个视图和一个文本)
export const AppTitle = () => {
return (
<View>
<Text>App Name</Text>
</View>
);
};
但是运行测试时出现此错误:
...../Utilities/warnOnce.js:15
const warnedKeys: {[string]: boolean} = {};
^^^^^^^^^^
SyntaxError: Missing initializer in const declaration
at ScriptTransformer.transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:471:17)
at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:513:25)
at Object.<anonymous> (node_modules/react-native/Libraries/react-native/react-native-implementation.js:14:18)
...
这是一个简单直接的模板。任何来自react-native + react-native-testing-library的帮助将不胜感激。
Expo 33
的分叉答案 0 :(得分:5)
我解决了jest.config.js文件中添加的“预设”:“ react-native”
答案 1 :(得分:0)
Const
易于声明,无法重新分配文字值,必须在声明的同时为其赋值。
但是,当前值中没有返回值。您放置的“渲染”中无法返回您的AppTitle
类。
因为您将其设置为箭头功能。这就是用法不同的原因。
import { AppTitle } from "path"
...
describe("AppTitle", () => {
it("should display applicaton title", () => {
const { getByText } = render( AppTitle() );
expect(getByText('App Name')).toBeTruthy();
});
});
OR
describe("AppTitle", () => {
it("should display applicaton title", () => {
const { getByText } = render(<View>
<Text>App Name</Text>
</View>);
expect(getByText('App Name')).toBeTruthy();
});
});
lambda组件
export const AppTitle = () => (
<View>
<Text>App Name</Text>
</View>
);
答案 2 :(得分:0)
我在项目中使用expo。我有同样的问题。我忘了在package.json中添加“ preset”:“ jest-expo”。我添加了,然后问题解决了。
"jest": { "preset": "jest-expo" },