We've covered a huge amount of ground in this chapter. We've stubbed out our own components in order to verify that our loader components correctly instantiate our rendering components. In addition, we've not just learned about shallow rendering, but also built our own set of helpers that aid us in building concise, readable test suites.
One of the major reasons for stubbing and spying on our child components is so that we can avoid running their side effects, such as fetch requests. Spying on them also allows us to easily assert that we set their props correctly.
In the next chapter, we'll make our forms more usable by adding validation and status messages.