Тестирование реагирующего контекста с помощью jest и response-testing-library - PullRequest
3 голосов
/ 14 апреля 2019

Я пытаюсь настроить тесты для моего component App.js, который принимает context в качестве реквизита и возвращает провайдера. Проблема в том, что когда я пытаюсь это проверить, контекст, который я передаю, всегда разрешается неопределенным.

Я поместил консольный журнал в компонент и один между созданием контекста и созданием компонента (который должен получать контекст в качестве параметра). Это привело к появлению console.log в компоненте по какой-то причине. Вероятно, поэтому я получаю, что контекст не определен, так как он еще не был инициализирован.

// Component/Provider
const App = (props) => {
  const {children, context} = props;
  const {data, dispatch} = useReducer(reducer);
  console.log(context); //undefined and this console.log runs first
  return <context.Provider value={useCallback(dispatch)}>{children}</context.Provider>
}

В моем test.js

import React, {useContext} from 'react';
import {render} from 'react-testing-library';
import {App} from './App';
const context = React.createContext();

function Provider(children) {
  console.log(context); //Is correct but runs second
  return <App Context={context}>{children}</App>;
}

const customRender = (ui, options) =>
  render(ui, { wrapper: Provider, ...options });

const Consumer = () => {
  const dispatch = useContext(context);
  returns <Button onClick={dispatch({type: 'Do something'})}>Whatever</Button/>;
}
customRender(<Consumer />)

Я должен иметь возможность передать Context в свой компонент для создания провайдера, но он всегда не определен.

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