Reactjs 如何使酶或笑话等上下文工作

Reactjs 如何使酶或笑话等上下文工作,reactjs,testing,jestjs,frontend,enzyme,Reactjs,Testing,Jestjs,Frontend,Enzyme,我正在向上下文传递一个函数,该函数在装入接收此上下文的组件时被调用。此函数将值设置为父组件状态 这里就是一个例子 在浏览器中,这种工作方式是这样的-第一次状态是{validation:{},然后更新为{validate:{name:'somename'}} 但在测试中,它只是第一次工作,并且状态不会更新为{validate:{name:'somename'} 我怎样才能解决这个问题 组件 验证 export class Validation extends React.Component {

我正在向上下文传递一个函数,该函数在装入接收此上下文的组件时被调用。此函数将值设置为父组件状态

这里就是一个例子

在浏览器中,这种工作方式是这样的-第一次状态是{validation:{},然后更新为{validate:{name:'somename'}}

但在测试中,它只是第一次工作,并且状态不会更新为{validate:{name:'somename'}

我怎样才能解决这个问题

组件
验证

export class Validation extends React.Component {
  static childContextTypes = {
    addValidation: PropTypes.func
  };

  state = {
    validations: {}
  };

  getChildContext() {
    return {
      addValidation: (name, value) => {
        this.setState((prevState) => ({
          ...prevState,
          validations: { ...prevState.validations, [name]: value }
        }));
      }
    };
  }

  render() {
    console.log(this.state);
    return this.props.children;
  }
}
验证字段

export class ValidationField extends React.Component {
  static contextTypes = {
    addValidation: PropTypes.func
  };

  componentDidMount() {
    const { name, validation } = this.props;
    this.context.addValidation && this.context.addValidation(name, validation);
  }

  render() {
    return <input />;
  }
}
导出类验证字段扩展了React.Component{ 静态上下文类型={ addValidation:PropTypes.func }; componentDidMount(){ const{name,validation}=this.props; this.context.addValidation&&this.context.addValidation(名称、验证); } render(){ 返回; } } 试验

it(“,()=>{
常量包装器=装入(
);
expect(wrapper.state()).toBe({
验证:{
字段名:“布拉布拉”
}
});
});   
it("", () => {
    const wrapper = mount(
      <Validation>
        <ValidationField name="fieldName" validation="blabla" />
      </Validation>
    );

    expect(wrapper.state()).toBe({
      validations: {
        fieldName: "blabla"
      }
    });
  });