Jest-Expo 在示例中崩溃(React.createElement:类型无效——需要一个字符串)

IT技术 reactjs react-native jestjs expo
2021-05-05 01:06:17

我很困惑为什么示例测试没有运行。我在这里使用带有typescript的 Expo Web。我的前端使用expo start --web.

// App.tsx
const App = () => {
  return (
    <View>
       <Text>Hello world</Text>
    </View>
  );
}

export default App;

我遵循了expo-jest 文档中的示例测试

// App.test.js
import React from 'react';
import renderer from 'react-test-renderer';

import App from '../App'; // <-- only changed path to match my folder structure

describe('<App />', () => {
    it('has 1 child', () => {
        const tree = renderer.create(<App />).toJSON();
        expect(tree.children.length).toBe(1);
    });
});

但是,当我跑步时npm test,我得到

const tree = renderer.create(<App />).toJSON();
                               ^
React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: object.

我知道大多数时候这是关于将默认导出与命名导出混合在一起,但我很清楚使用默认导出和导入。我究竟做错了什么?

1个回答

app.json的目录中可能有文件,其中还包含App.tsx. Jest 尝试导入app.json而不是App.tsx默认导入

配置 Jest 的moduleFileExtensions并放置tsx在左侧。

"moduleFileExtensions": ["tsx", ...]