Новейшие версии фермента кэшируют результаты, полученные из find
и других методов.
Вам необходимо повторно найти, а также использовать .update()
, чтобы заставить sh состояния восстановить render.
const checkBox = wrapper.find(Checkbox);
expect(checkBox).toHaveLength(1);
checkBox.simulate('change', { target: { checked: true } });
wrapper.update();
expect(wrapper.find(Checkbox).props().checked).toBe(true);
Кроме того, это может быть просто из-за того, что вы хотели создать минимальный воспроизводимый вопрос, но ваш тест в настоящее время неэффективен, потому что ваше значение по умолчанию равно true и вы передаете true динамически.
Вы должны сделать это вместо этого:
const checkBox = wrapper.find(Checkbox);
expect(checkBox).toHaveLength(1);
expect(checkBox.props().checked).toBe(true);
checkBox.simulate('change', { target: { checked: false } });
wrapper.update();
expect(wrapper.find(Checkbox).props().checked).toBe(false);
Этот тест фактически доказывает, что onChange
работает правильно.