Невозможно пройти тест на отсутствие «li» в «ul» с использованием Enzyme и Jest - PullRequest
0 голосов
/ 11 марта 2019

Простое приложение со списком задач, чтобы начать работу с Jest и Enzyme.

В App.js я рендерил следующий компонент, где props.list равен пустому массиву в состоянии.

export const Ul = ({list}) => {
    return (
        <ul className="list" >
          {list.map((item,i) => <li key={i}>{item}</li> )}
        </ul>
    ) 
}

При просмотре в Chrome элемент отображается так, как ожидалось.

<ul class="list"></ul> 

Просмотр dom, сгенерированного Enzyme, в консоли с помощью wrapper.debug(), компонент отображает как:

    <Ul list={{...}}>
        <ul className="list" />
    </Ul>

Я нахожу это странным и не знаю почему.

Моя проблема в том, что я не могу пройти тестовую проверку на отсутствие детей 'li' в UL со следующими данными:

it('ul initially has no children', () => {
    const wrapper = mount(<App />);
    expect(wrapper.find('.list').children()).to.have.lengthOf(0);
    // const ul = wrapper.find('.list');
    // expect(ul).toHaveLength(0); 
})

Я продолжаю получать сообщение "TypeError: Невозможно прочитать свойство 'have' of undefined", которое заставляет меня думать, что он не находит

    в первую очередь.

    Я просто неправильно использую jest / энзим api?

    1 Ответ

    0 голосов
    / 11 марта 2019

    Метод неверный.

      expect(wrapper.find('.list').children()).to.have.lengthOf(0); 
    

    Должно действительно:

      expect(wrapper.find('.list').children()).toHaveLength(0);
    
    ...