React - Jest Mock 内部组件

Gab*_*lho 8 components mocking reactjs jestjs

我有一个带有子组件的组件。该子组件有一些显示其子内容的规则,我想模拟它以显示内容,而不管其规则。

import MediaQuery from './component.media.query'
class Dumb extends Component {   render() {
    return (
      <Fragment>
        <div>Generic content</div>
        <MediaQuery device="DESKTOP">
          <div id="desktop">Specific desktop content</div>
        </MediaQuery>
      </Fragment>
    )   } }
Run Code Online (Sandbox Code Playgroud)

我尝试了一些方法,即使是最简单的也不起作用:

  describe('Dumb component', () => {
    jest.doMock('./component.media.query', () => {
      const Comp = () => <div id='desktop'>Mocked</div>
      return Comp
    })

    it('should display the desktop', () => {
      const wrapper = mount(<Dumb />)
      expect(wrapper.find('#desktop')).toExist()
    })
  })
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

And*_*rle 7

在您的测试中,您可以像这样模拟它:

jest.mock('./component.media.query', () => () => 'MediaQuery') 
//note that you have to enter the path relative to the test file.
Run Code Online (Sandbox Code Playgroud)

用酶你可以找到这样的元素

wrapper.find('MediaQuery')
Run Code Online (Sandbox Code Playgroud)