capo_mafioso
@capo_mafioso
Увлекаюсь веб-разработкой и веб-дизайном.

Jest, Enzyme. Как тестировать рефы?

Я занимаюсь тестированием метода жизненного цикла componentDidUpdate. У меня есть такой код

public componentDidUpdate(prevProps) {
    if (this.rowsIsUpdated) {
      this.setState({
        headers: this.updateWidthAndEditors()
      });

      const node = this._domNodeRef.current.querySelector('.react-grid-Canvas');
      node.scrollTo(0, node.scrollHeight);
      this.rowsIsUpdated = false;
    }
    // Если пришли данные размер которых не совпадает с тем что было, то устанавливаем новую длину данных
    if (this.props.rows.length !== prevProps.rows.length) {
      this.setState({ countRows: this.props.rows.length, height: this.props.height });
      // ставим флаг для последующего скролла вниз к добавленным строкам, после рендера
      this.rowsIsUpdated = true;
    }
  }


Я написал тест с использованием setProps. для обновления props rows.

it('change component content', () => {
    const wrapper = mount(<DataGrid rows={rows} headers={fields} width={500} height={500} />) as any;

    wrapper.setProps({ rows: rows2 }, () => {
      expect(wrapper.instance().rowsIsUpdated).toBe(false);
    });

  });


Тест останавливается на вызове node.scrollTo, выдавая ошибку "node.scrollTo is not a function".
Кто-нибудь сталкивался с подобными проблемами? Я не могу решить эту задачу уже несколько дней.

Я пробовал также использовать shallow за место mount в тесте и дважды вызывать setProps, но тогда появляется ошибка "maximum call stack size".
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы