We have now done as much as we can to modularize our code base, but how much confidence do we have in each of the modules? If one of the E2E tests fails, how would we pinpoint the source of the error? How do we know which module is faulty?
We need a lower level of testing that works at the module level to ensure they work as distinct, standalone units—we need unit tests. Likewise, we should test that multiple units can work well together as a larger logical unit; to do that, we need to also implement some integration tests.
By following this chapter, you will be able to do the following:
- Write unit and integration tests using Mocha
- Record function calls with spies, and simulate behavior with stubs, both provided by the Sinon library
- Stub out dependencies in unit tests using dependency injection (DI...