смоделировать щелчок элемента дочернего компонента в тестовом файле родительского компонента - PullRequest
1 голос
/ 09 ноября 2019

Не удалось найти способ имитации щелчка элемента, существующего в дочернем компоненте, из родительского тестового файла.

let card;

const displayCardSection = (cardName) => {
  card = cardName;
};

describe('Parent component', () => {
  it('simulate click event on child link', () => {
    const component = mount(<Parent
    />);
    const res = component.find(<Child
        onLinkClick={displayCardSection(CM_CARD)}
    />);
    expect(res).toBeDefined();
    res.exists('#cm_link').simulate('click');
    expect(card).toBe(CM_CARD);
  })
})

Это тестовый файл родительского компонента.

Parent.jsx:

class Parent extends Component {

  handleClick = () => {
    console.log('link clicked!');
  };

  render() {

    const linkText = 'Link'
    return (
      <Child 
        linkText={linkText}
        onLinkClick={handleClick}
      />
    );
  }
}

Child.jsx:

function Child({linkText, onLinkClick}) {
  return (
    <Link id="cm_link" onClick={onLinkClick}>{linkText}</Link>
    );
}

Это компоненты, которые у меня есть.

Я ожидаю смоделировать щелчок по ссылкедочерний компонент от родительского, и на выходе должна быть отображаемая карта 'CM_CARD'. Я могу написать утверждение assert, но я не должен имитировать событие click элемента, который существует в child, но событие обрабатывается в самом parent.

1 Ответ

0 голосов
/ 12 ноября 2019

Сначала я бы предложил использовать shallow, и код будет следующим:

const component = shallow(<Parent />);

// The following code should trigger the handler and then you will see the console output 
component.find("Child").prop("onLinkClick")();

Я надеюсь, что это полезно и решит вашу проблему, Хорошего дня!

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