You've already seen one technique for testing child components that perform side effects. We can stub out those components and uses spies to assert that they were instantiated with the right props.
There's another technique that we can use to test components, and we'll use it for building App. It's shallow rendering, and it essentially builds us a tree of React component instances, but stops at all custom components. All primitives, such as div, ol, and table, will be rendered along with their children. Since all of the components that we've written in the book are custom components, none of them will be rendered.
The root component itself will have all of its hooks and side effects run, so we can continue to test any kind of life cycle, and we'll use that to test-drive App.
So, what does this tree of component instances...