Имитация события onClick для элемента , но получение ошибки: метод “simulate” предназначен для запуска на 1 узле. вместо этого найдено 0

#javascript #reactjs #testing #jestjs #enzyme

#javascript #reactjs #тестирование #jestjs #фермент

Вопрос:

код моей функции возврата, в котором должен быть найден элемент li:

       return (
          <li
            className={className}
            key={optionName.fruitName}
            id = 'clickItem'
            onClick={onClick}
            style={{ display: "flex" }}
          >
            <img className="img" src={optionName.img} alt="" />
            <h4 className = 'name'>{optionName.fruitName}</h4>
          </li>
        );
 

мой тестовый пример: то, что я пытаюсь сделать, это запустить функцию onclick, имитируя щелчок, но не находя ни одного узла.

 describe('onClick function testing', () => {
let options=[
  {
    fruitName: 'Papaya',
    img:'https://c.ndtvimg.com/2019-06/qlo3s8ko_papaya-seeds_625x300_06_June_19.jpg' 
  },
  {
    fruitName: 'Apple',
     img: 'https://www.dukachapchap.co.ke/wp-content/uploads/2019/01/APPLE.jpg'
  },
  {
    fruitName: 'Banana',
    img: 'https://images.immediate.co.uk/production/volatile/sites/30/2017/01/Bananas-218094b- 
     scaled.jpg?quality=90amp;resize=960,872'
  }
  ]

  it('should be called with click', () => {
  const logSpy = jest.spyOn(console, 'log');
  const wrapper = shallow(<AutoComplete options = {options}></AutoComplete>)
  expect(wrapper.find('.option-active')).toBeDefined();
  const event = { currentTarget: { innerText: 'Papaya' }};
  const li = wrapper.find('li').simulate('click',event);
  expect(li).toBeTruthy();
 
  });
 

Комментарии:

1. Где находится .option-active в вашем компоненте? Как вы узнали, что элемент с этим именем класса определен?

2. событие, хотя, если я попытаюсь найти его по идентификатору или элементу, подобному li, я не могу его найти, и я действительно обнаружил, что мой компонент не отображает этот компонент, потому что он отображает / запускает только на экране