Jest Enzyme как поверхностно проверить наличие обернутого компонента - PullRequest
0 голосов
/ 14 декабря 2018

Я тестирую компонент, который условно отображает упакованный компонент.Я использую энзим и шутки, а корневой компонент отображается методом shallow ().Проблема заключается в проверке, содержит ли Root-компонент упакованный компонент.

Как проверить, существует ли упакованный компонент без использования метода render ()?

hoc.component.jsx

export function HOC(Component) {
   render() {
     return <Component /> 
   }
}

wrapped.component.jsx

class WrappedComponent extends React.Component {
  ...
}

export default HOC(WrappedComponent)

root.component.jsx

class RootComponent extends React.Component {
   render() {
     return (
        condition ? ... :
         <WrappedComponent/>
     )
   }
}

При тестировании root.component.jsx Я хотел бы проверить, существует ли WrappedComponent.

root.component.spec.js import {WrappedComponent} из 'WrappedComponent'

const wrapper = shallow(<RootComponent {...props}/>);
wrapper.find(WrappedComponent).length => returns 0

Если я регистрирую wrapper.debug (), я вижу следующее:

...<HOC(WrappedComponent) />

Как мне проверить наличие WrappedComponent во время тестирования RootComponent?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Должно быть возможно утверждать о существовании компонента, если WrappedComponent в тестах не является исходным классом компонента, а компонентом, заключенным в HOC, т.е. HOC(WrappedComponent).

Если HOC(WrappedComponent)экспорт по умолчанию, должен быть:

import WrappedComponent from 'WrappedComponent'

...

const wrapper = shallow(<RootComponent {...props}/>);
expect(wrapper.find(WrappedComponent).length).toBe(1);
0 голосов
/ 14 декабря 2018

Вы можете использовать селектор 'HOC(WrappedComponent)':

test('WrappedComponent is rendered', () => {
    const wrapper = shallow(<RootComponent {...props}/>);
    expect(wrapper.find('HOC(WrappedComponent)').length).toEqual(1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...