本文介绍了Jest-Expo 在示例上崩溃(React.createElement:类型无效 - 应为字符串)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm very confused on why the example test isn't running. I'm using Expo Web here with typescript. My frontend runs fine using expo start --web.

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

export default App;

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

I followed the example test from the expo-jest docs

// 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 时,我得到了

However when I run npm test, I get

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.

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

I know this is about mixing up default exports with named exports most of the time but I am cleary using a default export and import. What am I doing wrong?

推荐答案

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

You may have app.json file in the directory which also contains App.tsx. Jest tries to import app.json rather than App.tsx by default.

配置 Jest 的 moduleFileExtensions 并放置 tsx在左边.

Configure Jest's moduleFileExtensions and place tsx in the left.

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

这篇关于Jest-Expo 在示例上崩溃(React.createElement:类型无效 - 应为字符串)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-18 08:30