使用Enzyme.mount时,`render`调用返回null

时间:2017-08-24 22:55:53

标签: javascript reactjs jestjs enzyme

问题

有没有人知道在使用null时让挂载组件返回Enzyme.mount(或类似内容)的可接受方式?

用例

我有一个包含在 n 高阶组件中的组件。我想实际mount组件而不是shallow,因为我想测试componentDidMount按预期调用的内容。

我的mount函数/测试是这样的:

const component = <ApplicationsShowRoute />;
const { store } = mountSetup(component);
expect(store.getActions()).toEqual([ { type: 'API_REQUEST' } ]);

当我装载它时,我宁愿不必担心渲染的内容(子组件中的错误等)。

代码

export class ApplicationsShowRouteRaw extends Component {

  componentDidMount() {
    const { uuid } = this.props.match.params;

    this.props.fetchShowRoute(uuid);
  }

  props: Props

  render() {
    const { application, match } = this.props;

    return isEmpty(application) || application.Uuid !== match.params.uuid ? (
      <FullPageLoader />
    ) : (
      <ApplicationsShow
        application={application}
      />
    );
  }
}

export const mapStateToProps = (state: Object) => ({
  application: getShowRoute(state),
});

export const mapDispatchToProps = (dispatch: Function) => ({
  fetchShowRoute: (uuid: string) => dispatch(fetchShowRoute(uuid)),
});

export default connect(
  mapStateToProps,
  mapDispatchToProps,
)(ApplicationsShowRouteRaw);

1 个答案:

答案 0 :(得分:1)

如果您希望使用所有生命周期方法进行浅层渲染,则可以使用shallow并将lifecycleExperimental选项设置为true