Jest getReversedNavigationSection of null - PullRequest
0 голосов
/ 29 мая 2019

У меня есть ручка для прокрутки, например:

handleOnScroll = () => {
    const {form, navigationSections} = this.props;

    const reversedSections = this.getReversedNavigationSections();

    const OFFSET_TOP = form === 'createIdentity' ? 34 : 140;
    const st = window.pageYOffset || document.documentElement.scrollTop; 

    if (st > window.lastScrollTop) {
        for (let i = 0; i < navigationSections.length; i += 1) {
            if (document.getElementById(navigationSections[i].id).getBoundingClientRect().top <= OFFSET_TOP) {
                this.setNavigationActiveWithDebounce(navigationSections[i].id);
            }
        }

    } 

    if (st < window.lastScrollTop) {
        for (let y = 0; y < reversedSections.length; y += 1) {
            if (document.getElementById(navigationSections[y].id).getBoundingClientRect().top <= OFFSET_TOP) {
                this.setNavigationActiveWithDebounce(navigationSections[y].id);
            }
        }
    }

    window.lastScrollTop = st <= 0 ? 0 : st;

}

и тест для него вот так:

    it('should handle handleOnScroll', () => {
        window.lastScrollTop = 200;
        window.pageYOffset = 50;

        instance.handleOnScroll();

        expect(instance.getReversedNavigationSections).toHaveBeenCalled();
    });

Я бы ожидал, что этот тест пройдёт (по крайней мере, для 'getReversedNavigationSections'), однако я получаю:

enter image description here

1 Ответ

1 голос
/ 29 мая 2019

Во-первых, вы уже пытались отладить этот тест?

Тот факт, что вы получаете эту ошибку, означает, что здесь что-то не так.

document.getElementById(navigationSections[i].id)

Что означает, что вы не получаетеэлемент вообще.

Не имея возможности увидеть остальную часть вашей реализации, я предполагаю, что вы объединяете виртуальную манипуляцию DOM с прямой манипуляцией DOM, и что-то теряется в миксе, но я не могу 'Рассказать на основе фрагмента кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...