У меня есть тест шутки / фермента, который создает ShallowWrapper вокруг компонента, находит указанную кнопку semantic-ui-react (по идентификатору), имитирует щелчок по кнопке, а затем проверяет, переключил ли щелчок определенный контент.
Пример JSX:
<Popup
trigger={<Button onClick={this.toggleShowThing} id="special-btn">a button</Button>}
content="Popup Words"
/>
{this.state.showThing &&
<div className="special-thing">The Thing's Words</div>
}
Образец теста:
it('shows the thing when the button is clicked', () => {
const wrapper = shallow(<MyComponent />);
wrapper.find('#special-btn').simulate('click', { preventDefault() {} });
expect(wrapper.find('.special-thing').exists()).toBe(true);
});
Этот тест работал, когда у меня был только Button. Когда я добавил всплывающее окно и кнопка была помещена в опору триггера, я получил сообщение об ошибке, потому что не удалось найти # special-btn.
Ошибка: метод «props» предназначен для запуска только на одном узле. 0 нашел взамен.
Снимок фермента компонента показывает, что всплывающее окно выглядит следующим образом:
<Popup
content="Popup Words"
on="hover"
position="top left"
trigger={
<Button
id="special-btn"
onClick={[Function]}
>
a button
</Button>
}
/>
Мне нужен мой тест, чтобы снова работать. Как мне снова получить доступ к # special-btn в тесте, чтобы я мог вызвать .simulate ('щелкнуть') по нему?