Я тестирую приложение 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
?