酶instance()返回null

时间:2020-03-06 09:46:30

标签: reactjs redux jestjs enzyme

我进行了以下测试:

describe('Form', () => {
  let store;
  let wrapper;

  beforeEach(() => {
    store = mockStore(mockData);
    wrapper = mount(
      <Provider store={store}>
        <Form />
      </Provider>
    );
  });

  it('handleForm calls uses validate() for validation', () => {
    const instance = wrapper.instance();
    const submitFormButton = wrapper.find('.submitFormButton');
    submitFormButton.simulate('click');
    console.log(instance); // null
  });
});

对我到底在做什么错有任何想法吗?

我知道酶有这个东西:

注意:对于React 16及更高版本,instance()对于无状态返回null 功能组件。

但是我的功能组件确实有一个状态,我正在使用钩子(如果那会改变任何东西),那么应该仍然可以通过某种方式访问​​instance.componentMethod(),对吧?

1 个答案:

答案 0 :(得分:1)

注意:在React 16及更高版本中,instance()对于无状态功能组件返回null。

<mat-progress-bar [class]="color" [value]="{{ progress }}"></mat-progress-bar> 中,它们实际上是指功能组件。 stateless component方法是为基于类的组件保留的。

因此您可以将其用于此组件:

instance()

但不是这个:

class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}