Доступ к API контекста снаружи тестируемого компонента - PullRequest
0 голосов
/ 18 февраля 2019

Я использую Jest и React-testing-library для тестирования компонента React.Я рендерил компонент с поставщиком API контекста, чтобы у компонента был доступ к контексту.К сожалению, я не знаю, как я могу получить к нему доступ снаружи визуализированного компонента.В этом случае в контексте есть свойство isUserLogged, в зависимости от того, какой компонент изменяется.Но я не знаю, как я могу изменить значение этого свойства.Как я могу подойти к этому делу?Если требуется подделка API контекста, как я могу это сделать?

В прилагаемом коде я пытаюсь получить доступ к контексту с помощью ловушки useContext.Ошибка говорит, что я не могу использовать хуки вне компонентов React.И, очевидно, я пытаюсь получить доступ к контексту вне провайдера контекста, чтобы он все равно не работал.

import { Provider, Context } from '../../context';

test('Star is not clickable for a non-registered user', () => {
  const { getByTestId } = render(<Provider><Star /></Provider>);
  const isUserLogged = useContext(Context).isUserLogged; // Error.
});

1 Ответ

0 голосов
/ 18 февраля 2019

Вы просто должны отрендерить Provider, пропустив value проп.Вот как бы вы сделали это в своем приложении.

const isUserLogged = true
render(<Provider value={{ isUserLogged }}><Star /></Provider>)
...