Jest & Enzyme. Найти количество всех элементов внутри оболочки - PullRequest
0 голосов
/ 01 мая 2020

В шутку и фермент. Как найти количество всех элементов (детей, детей, детей и т. Д. c.) Внутри обертки. wrapper.children().length выводит только прямые дочерние элементы оболочки

1 Ответ

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

1-й самый простой способ:

Используйте .find() для каждого элемента в вашем компоненте, поэтому, если у вашего компонента есть div, h1 и пользовательский компонент с именем

Тогда вы должны сделать:

const divs = wrapper.find('div');
const h1s = wrapper.find('h1');
const headers = wrapper.find(Header);

expect(divs.length + h1s.length + headers.length).toBe(yourExpect);

2-я динамика c way:

Используйте рекурсию DFS или BFS к l oop через дочерние оболочки и также и ее дочерние элементы. У каждого узла есть свойство потомков, которое является массивом (если я правильно помню), и вы можете затем l oop через каждое из них и длину до переменной с именем numberOfElementsInComponent.

Примерно так:

let numberOfElementsInComponent = 0;

const dfsThroughNode = (node) => {
  if (node.children) {
    node.children.forEach((childNode) => {
      dfsThroughNode(childNode);
    });
  }
  numberOfElementsInComponent += 1;
};

it('yourTest', () => {
  const wrapper = shallow(<Component />);

  wrapper.children().forEach((childNode) => {
    dfsThroughNode(childNode);
    numberOfElementsInComponent += 1;
  });

  expect(numberOfElementsInComponent).toBe(yourExpect);
});

Примерно так, например.

...