У меня есть поставщик контекста, и я хочу проверить, что он предоставляет некоторое значение (скажем, 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');
});