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);
});
Примерно так, например.