Я пытаюсь протестировать свой компонент, который использует данные из контекста через HOC.
Вот настройка: Модуль Mocked context /context/__mocks__
const context = { navOpen: false, toggleNav: jest.fn() }
export const AppContext = ({
Consumer(props) {
return props.children(context)
}
})
Higher OrderComponent /context/withAppContext
import React from 'react'
import { AppContext } from './AppContext.js'
/**
* HOC with Context Consumer
* @param {Component} Component
*/
const withAppContext = (Component) => (props) => (
<AppContext.Consumer>
{state => <Component {...props} {...state}/>}
</AppContext.Consumer>
)
export default withAppContext
Компонент NavToggle
import React from 'react'
import withAppContext from '../../../context/withAppContext'
import css from './navToggle/navToggle.scss'
const NavToggle = ({ toggleNav, navOpen }) => (
<div className={[css.navBtn, navOpen ? css.active : null].join(' ')} onClick={toggleNav}>
<span />
<span />
<span />
</div>
)
export default withAppContext(NavToggle)
И, наконец, набор тестов /navToggle/navToggle.test
import React from 'react'
import { mount } from 'enzyme'
beforeEach(() => {
jest.resetModules()
})
jest.mock('../../../../context/AppContext')
describe('<NavToggle/>', () => {
it('Matches snapshot with default context', () => {
const NavToggle = require('../NavToggle')
const component = mount( <NavToggle/> )
expect(component).toMatchSnapshot()
})
})
Тест только начинается, но я сталкиваюсь с этой ошибкой: Warning: Failed prop type: Component must be a valid element type!
in WrapperComponent
Что, по моему мнению, является проблемой с HOC, следует ли мне посмеяться над этим как-то вместо AppContext, потому что технически AppContext не вызывается напрямую компонентом NavToggle, а вызывается в компоненте упаковки.
Заранее спасибо за любыевход.