Фермент: Испытайте детей, отображающих сбой с горы, но проходящих с мелкой - PullRequest
0 голосов
/ 13 марта 2020

Я использую Enzyme + Jest для тестирования некоторых компонентов React.

У меня есть следующий тест:

describe('<Modal />', () => {
  let wrapper;

  it('should render children props', () => {
    wrapper = shallow(<Modal />);
    wrapper.setProps({
      children: <div className='should-render'>This should be rendered</div>
    });
    expect(wrapper.find('.should-render').length).toEqual(1);
  });
});

И это работает просто найти. Но если я заменим метод shallow из enzyme на mount, тест не пройден (не удается найти элемент с классом .should-render).

Это ожидаемое поведение? Я думал, что разница между shallow и mount заключалась в возможности доступа к методам жизненного цикла, но рендер работал так же.

1 Ответ

0 голосов
/ 13 марта 2020

Хорошо. Поэтому проблема заключалась в том, что я не понимал, как работает mount.

Мой Modal компонент имеет переменную состояния, называемую show, которая препятствует монтированию элемента, если для него установлено значение false (I ' м упаковка react-boostrap модальный компонент, который имеет такое поведение). По умолчанию эта переменная состояния имеет значение false, и, поскольку дочерние элементы отображаются в теле модального объекта, дочерние элементы не были найдены, поскольку элемент не был смонтирован beign.

...