Я занимаюсь тестированием метода жизненного цикла 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".