在开玩笑&酶。如何查找包装器内所有元素(子代、子代等)的数量。wrapper.children().length
只输出包装器的直接子元素
第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);
});
比如说像这样: