React Test Utils - шпион не вызывается, когда выполняется симуляция клика -

Я пытаюсь смоделировать щелчок по элементу dom в реактивном компоненте и утверждать, что на этом основании вызывается шпион. Вот соответствующая часть теста (с использованием кармы, мокко, чая, синона, но я совершенно уверен, что здесь это не имеет значения):

const selectSpy = sinon.spy();
const component = TestUtils.renderIntoDocument(<SomeComponent onSelect={selectSpy} />);
TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li'));
expect(selectSpy.called).to.be.ok;

и вот компонент реакции:

render() {
    let { title , data, onSelect }  = this.props;
    console.log(this.props.onSelect); // This correctly logs out the spy
    return (
      <div>
        <ul>{data.map((row, i) => {
          return <li onClick={this.handle.bind(this,row)} key={i}>{row.title}</li>; })}
        </ul>
      </div>
    )
}

handle(row) {
    this.props.onSelect(row);
}

Тест выполняется, но результатом является неудачный тест с сообщением "Ожидается, что ложь будет правдивой". Я не вижу ничего плохого в коде - ошибок нет, и мой шпион правильно пройден. Есть ли что-то еще, что мне нужно делать?

1 ответ

Решение

TestUtils.Simulate.click ожидает элемент DOM, но scryRenderedDOMComponentsWithTag возвращает массив элементов DOM.

Попробуйте изменить

TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li'));

в

TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li')[0]); 
Другие вопросы по тегам