Let's start by taking a look at the various tools and libraries we're going to be using to run and write our tests. There are three main concepts we need to cover before we can actually start writing real tests.
The first is a test runner or the framework we use to run our suite of tests.
Most of the frameworks follow Test Driven Development (TDD) and its process relies on the following steps:
It defines a unit test
Implements the unit
Executes the test and verifies that the test passes
The second concept is the assertion library itself—the language we use to write our tests. A special version of using assertion language, to design and build pieces of functionality incrementally guided by an expected behavior is Behavior Driven Development (BDD).
For both TDD and BDD, we can use the Mocha testing framework; however, we will be writing assertions using a special assertion library called Chai.js
Finally, we'll take a look at the idea of spies and stubs, which are fake representatives...