React Test Utils — Spy не вызывается при выполнении имитации клика —

Я пытаюсь смоделировать щелчок по элементу 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);
}

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


person Mike Rifgin    schedule 22.03.2016    source источник


Ответы (1)


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

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

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

to

TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li')[0]); 
person dannyjolie    schedule 22.03.2016
comment
Вот и все. Спасибо большое - person Mike Rifgin; 22.03.2016