@Fannasankh

Как сделать тестирование кликов в React?

Есть реакт приложение которое грубо говоря состоит из основного statefull компонента и вложенных в него stateless компонентов. Во вложенных компонентах есть обработка кликов, которая вызывает переданные через props методы из основного компонента. Как мне протестировать клик и то, что после клика рендерится новый результат в определенное поле?
Просто рендеринг результата при старте приложения я сделал, работает.
А вот клики не получается эмулировать.

Делаю примерно так

const component = mount();
const buttons = component.find(Button);
buttons.at(0).simulate("click");
component.update();
const text = component.find(TextComponent);
expect(text.text()).toEqual("-");

По идее там "-" при инициализации, а при клике должен измениться, а ничего не меняется
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
@camelCaseVlad
Вот как можно протестировать простую кнопку:

test('button executes Onclick ', () => {
    const wrapper = mount(<ButtonComponent onClick={jest.fn()} />);
    wrapper.find('button').simulate('click');
    expect(wrapper.props().onClick).toBeCalled();
  });


Вот вариант, как протестировать функцию, которая была передана как проп:

test('MyComponent', () => {
    const myFn = jest.fn();
    const props = { myFn, ...otherProps }
    const wrapper = mount(
        <MyComponent {props}/>
    );
       wrapper.find('button').simulate('click');
      wrapper.update();
      expect(wrapper.props().myFn).toBeCalled();
  });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы