SyntaxError:const声明中缺少初始化程序

时间:2019-07-23 07:31:00

标签: react-native jestjs react-testing-library

我正在我的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>
  );
};

但是运行测试时出现此错误:

enter image description here

...../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的帮助将不胜感激。

  1. 反应:16.8.3
  2. 本机:来自Expo 33的分叉
  3. jest-expo:“ ^ 33.0.2”
  4. react-native-testing-library”:“ 1.7.0”

3 个答案:

答案 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" },