Как я могу проверить, что частная функция была вызвана при событии щелчка? - PullRequest
0 голосов
/ 12 апреля 2019

Я учу шутить и пытаюсь проверить события клика. Моя функция, которую я пытаюсь проверить, является частной в компоненте.

Я пытался использовать метод spyOn ().

Это компонент, вызывающий функцию

<NavbarToggler onClick={this.toggleNavbar} />

Это функция

    private toggleNavbar = (): void => {
        this.setState({
            isOpen: !this.state.isOpen
        });
    }

Это тест

it('toggleNavbar is called when NavbarToggler is clicked', () => {
    const wrapper = shallow(<NavBar />);
    const instance = wrapper.instance();

    jest.spyOn(instance, 'toggleNavbar');

    wrapper.find(NavbarToggler).simulate('click');

    expect(instance.toggleNavbar).toEqual(true);
});

В настоящее время я получаю сообщение об ошибке на jest.spyOn о том, что toggleNavbar нельзя назначить параметру

1 Ответ

1 голос
/ 12 апреля 2019

Чаще всего вам не нужно это делать, поскольку вы будете тестировать детали реализации компонента - это сделает ваш тест хрупким.Если ваш закрытый метод устанавливает состояние, то состояние, скорее всего, изменяет вывод того, что представляет компонент.Вы должны утверждать, что после срабатывания (например, с помощью щелчка) результат рендеринга содержит это изменение.

Предполагается, что вы используете enzyme

    // expect(wrapper.find(Navbar)).not.toExist(); // enzyme-matchers provides `toExists()`
    wrapper.find(NavbarToggler).simulate('click');
    expect(wrapper.find(Navbar)).toExist(); // enzyme-matchers provides `toExists()`

.вопрос - если вы используете enzyme, вы можете проверить состояние компонента.Другим очень грязным решением было бы instance.toggleNavbar = jest.fn(), хотя, как уже было сказано, вам никогда не нужно это делать.

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