Фермент ReactWrapper не обновляется - PullRequest
0 голосов
/ 01 февраля 2019

Я тестирую приложение React, используя Enzyme и Jest.В приложении есть набор флажков, представляющих список API.Каждый раз, когда устанавливается такой флажок (срабатывает onChange), его идентификатор службы добавляется в состояние приложения, так что ввод обрабатывается флажок .

state = {
  checkedServicesIds: [] // Array<number>
}

Спецификация:

it.only('should check and uncheck services when clicked', () => {
  wrapper.setProps({ [{ id: 0, name: 'The Super API' }, { id: 1, name: 'Cool Villains Hub' }] })
  wrapper.setState({ checkedServicesIds: [] })

  // Gettings wrappers for each checkbox
  const input0 = wrapper.find(`input#service_ids_${0}`)
  const input1 = wrapper.find(`input#service_ids_${1}`)

  expect(input0.prop('checked')).toBe(false) // --> passes
  expect(input1.prop('checked')).toBe(false) // --> passes

  input0.simulate('change') // Here id: 0 is added to the array

  // wrapper.update() and/or input0.update() does nothing here

  expect(wrapper.state('checkedServicesIds')).toEqual([0]) // --> passes

  // Now here's the thing: the old wrapper did not update
  expect(wrapper.find(`input#service_ids_${0}`).prop('checked')).toBe(true) // --> passes
  expect(input0.prop('checked')).toBe(true) // --> Expected: true, Received: false !!!
})

Правильно ли я не использую update?

1 Ответ

0 голосов
/ 01 февраля 2019

Я думаю, вам нужно обновить упаковщик.

wrapper.update();

Из документации по ферментам :

Принудительное повторное рендеринг.Полезно запускать перед проверкой выходных данных рендеринга, если что-то внешнее может где-то обновлять состояние компонента.

ПРИМЕЧАНИЕ: может вызываться только для экземпляра оболочки, который также является корневым экземпляром.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...