Использование фермента, как найти дочерний компонент в компоненте, реагировать, если они являются результатом возврата функции - PullRequest
2 голосов
/ 28 мая 2020

Я использую шутку / энзим и хочу проверить наличие дочерних элементов компонента React, если у меня есть функция как дочерний компонент

const children = () => (
    <>
      <div>...</div>
      <div>...</div>
    </>
) 
return <Component>{children}</Component>;

почему я не могу этого сделать

1 Ответ

0 голосов
/ 28 мая 2020

Ваша дочерняя функция - это, по сути, свойство рендеринга, а shallow не отображает его. Однако вы можете запустить рендеринг, вызвав его как функцию, например

shallow(
  shallow(<MyComponent />)
    .find(Component)
    .prop('children')()
)

. Таким образом, ваш тест будет выглядеть как

test('Should render div', () => {
    wrapper = shallow(<MyComponent />);
    const component = wrapper.find(Component);
    expect(component.exists()).toBe(true);  //return true
    const renderProp = shallow(component.prop('children')());
    const children = renderProp.find('div');
    expect(children.exists()).toBe(true); 
  });
...