酶高阶成分类型无效

时间:2018-07-30 13:45:08

标签: reactjs enzyme

我正在尝试使用浅层渲染器用酶测试HoC,但我不断收到以下警告:Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: object.

以下是重现警告的简单示例:

import React from 'react';
import { shallow } from 'enzyme';

const testHoc = Wrapped => {
  return () => {
    return (
      <div>
        <div>Wrapping</div>
        <Wrapped/>
      </div>
    );
  };
};

const Component = testHoc(<div>Hi</div>);
const wrapper = shallow(<Component/>);

我不知道为什么会这样,因为在应用程序实际运行时(只有在运行测试时)我没有收到任何这些错误。这些警告的原因是什么?

我正在使用React 16.3.2和酶3.3.0

1 个答案:

答案 0 :(得分:1)

您很近。在测试中,当您需要传递组件时,您将JSX元素传递给testHoc。

// this is just a JSX Element
const element = (<div>Hi</div>);

// this is a simple React component
const SimpleComponent = () => (<div>Hi</div>);

将创建组件的行更改为

const Component = testHoc(() => <div>Hi</div>);

一切都会正常工作。