酶不变违反:将HOC作为一个函数而不是类

时间:2018-04-06 16:59:06

标签: reactjs enzyme jest

我正在尝试测试在处理HotKey组合的HOC中调用的函数(模拟(' keyDown')。但是,我不理解Enzyme如何处理这种情况。

我有许多由HOC包裹的组件,如下所示:

class RealComponent extends Component {
    constructor(props) {
        super(props);
    }

    render() {
      return (<div>The views</div>);
   }
}
export default Hoc(RealComponent);

和HOC本身是:

const Hoc = RealComponent => {
    class Hoc extends Component {
        constructor() {
            super();
        }

        methodGetsTriggered() { // <this is the method I want to test when simulating keyDown
            this.childComponent.methodToCall();
        }
        render() {
            return (
                <RealComponent
                    ref={component => (this.childComponent = component)}
                    {...this.props}
                />
            );
        }
    }
    return Hoc;
};

module.exports = Hoc;

当我尝试使用

进行测试时

shallow(Hoc(<RealComponent theProps={things} />),{context});

我收到错误

  

不变违规:ReactShallowRenderer render():无效的组件元素。不要传递组件类,请确保通过将其传递给React.createElement来实例化它。

我正在尝试测试Hoc中的methodGetsTriggered()

0 个答案:

没有答案