Фермент - как проверить, что ребенок получает контекст - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть поставщик контекста, и я хочу проверить, что он предоставляет некоторое значение (скажем, foo) через контекст своим дочерним элементам.Как я могу сделать это с энзимом?Это вообще возможно?

<MyContextProvider>
    <Child />  // how do I test that foo is available in the Child component's context?
</MyContextProvider>

Обновление: я хочу проверить это, потому что я передаю реквизит своему провайдеру контекста, который затем предоставляется как часть объекта контекста.

const store = configureStore()({ locale: 'es' });
const wrapper = mount(
    <ConnectedIntlProvider store={store}>
        <Child />
    </ConnectedIntlProvider>
);

Я хочу проверить, что ConnectedIntlProvider получает locale из хранилища, а затем передает его как часть intl объекта через контекст своим дочерним элементам.

Обновление 2: мне удалось написать тест без использования Enzyme.Хотя это выглядит немного странно, мне интересно, есть ли более простой способ достичь того же результата с помощью энзима.

it('uses locale from store', () => {
    class Child extends React.Component {
        render() {
            return <div />;
        }
    }

    Child.contextTypes = {
        intl: intlShape,
    };

    const store = configureStore()({ locale: 'es' });
    const div = document.createElement('div');
    let child;
    ReactDOM.render(
        <ConnectedIntlProvider store={store}>
            <Child
                ref={(c) => {
                    child = c;
                }}
            />
        </ConnectedIntlProvider>,
        div
    );
    const locale = child && child.context && child.context.intl && child.context.intl.locale;
    ReactDOM.unmountComponentAtNode(div);
    expect(locale).toEqual('es');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...