2

我有一个像这样的 HOC,我想测试这个getStuff2功能:

function withHoc(aComponent) {
  class hocClass extends React.Component {

    getStuff1 = () => {

    }

    getStuff2 = () => {

    }

    render() {
      return <aComponent {...this.props} getStuff1={this.getStuff1} />;
    }
}
}

我正在像这样测试它:

class MockApp extends React.PureComponent {
  render() {
    return <p>Hello from your Mock App</p>;
  }
}

const MockWithHOC = withHoc(MockApp);

const wrapper = shallow(<MockWithHOC />);

it('Test getStuff2', () => {
    const result = wrapper.getStuff2();
});

但是当我运行它时,它说getStuff2找不到。当我打印出包装器时,我只看到getStuff1渲染时传入的内容:

<MockApp getStuff1={[Function]} />

我不想传入getStuff2被包装的组件,因为那里不需要它。它只需要作为辅助方法,getStuff1所以有没有一种方法可以访问该方法而不将其传递给包装的组件?

4

1 回答 1

0

(我假设您正在使用酵素,因为shallow()您正在使用)

您可以使用wrapper.instance()

const result = wrapper.instance().getStuff2();

请参阅ShallowWrapper .instance()

于 2021-02-06T11:12:25.123 回答