Chapter 3. Test Doubles
This chapter covers the concept of test doubles and explains various test double types, such as mock, fake, dummy, stub, and spy. Sometimes, it is not possible to unit test a piece of code because of unavailability of collaborator objects or the cost of instantiation for the collaborator. Test doubles alleviate the need for a collaborator.
We know about stunt doubles—a trained replacement used for dangerous action sequences in movies, such as jumping out of the Empire State building, a fight sequence on top of a burning train, jumping from an airplane, or similar actions. Stunt doubles are used to protect the real actors or chip in when the actor is not available.
While testing a class that communicates with an API, you don't want to hit the API for every single test; for example, when a piece of code is dependent on database access, it is not possible to unit test the code unless the database is accessible. Similarly, while testing a class that...