杰斯特&酶。查找包装物内所有元素的数量

问题描述 投票:0回答:1

在开玩笑&酶。如何查找包装器内所有元素(子代、子代等)的数量。wrapper.children().length 只输出包装器的直接子元素

reactjs testing enzyme jest
1个回答
0
投票

第1种最简单的方法。

.find() 的每个元素上,所以如果你的组件有divs、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);

第二种动态方式:

使用DFS或BFS递归来循环包装器的子节点和它的子节点。每个节点上都有一个子节点的属性,它是一个数组(如果我没记错的话),然后你可以循环浏览每个节点,并将长度添加到一个名为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);
});

比如说像这样:

© www.soinside.com 2019 - 2024. All rights reserved.