Фермент ShallowWrapper не синхронизирует состояние - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь смоделировать вход, который вызывает функцию onValueChange. Все работает отлично, за исключением одного реквизита, который установлен в customHandleChange через setState. Это изменение не отражается в объекте ShallowWrapper. Другие реквизиты работают просто отлично. Кажется, что состояние не обновляется на ShallowWrapper. Я нашел много тем, в которых говорилось, что update или forceupdate должны синхронизировать состояние, но это не так.

const wrapper = shallow(<EmployeeForm {...props} />).dive();

wrapper
  .find('InnerForm')
  .dive()
  .find('[name="firstName"]')
  .at(0)
  .simulate('valueChange', { target: { name: 'firstName' }, detail: 'Max' });

await wrapper.instance().forceUpdate();
wrapper.update();

console.log(
  wrapper
    .find('InnerForm')
    .dive()
    .find('[name="firstName"]')
    .at(0)
    .props()
);

expect(
  wrapper
    .find('InnerForm')
    .dive()
    .find('[name="firstName"]')
    .at(0)
    .props().required
).toEqual(true);

});

      <Input
        name="firstName"
        required={this.state.contactRequired}
        onValueChange={customHandleChange}
      />
private customHandleChange = (event: CustomEvent<string>) => {
    this.setState(
      {
        contactRequired: true,
      },
      () => this.forceUpdate()
    );
}

Возможно ли синхронизировать состояние с объектом-оберткой?

Редактировать : Конечно, проблема в том, что props().required остается ложным (по умолчанию) навсегда.

...