Summary
In this chapter, we have learned how to write unit tests in Node.js, used Mocha and Chai to write more descriptive tests, created test doubles using Sinon.JS, written application level tests using SuperAgent and SuperTest, and implemented a full-stack test in PhantomJS.
Although we have tests at each layer of our application now, we haven't yet covered all of our code. It would be useful to find any gaps where we should write more tests. We also have to invoke a few different commands to run all of our unit and integration tests. In the next chapter, we'll see how to automate these and other processes as part of a continuous integration build.