Creating spies in code
In the following recipe, we will learn how to create a spy using Mockito code only (without annotations). As a reminder, you should have very legitimate reasons to use a spy in your code, otherwise it most likely signifies that there is something wrong with your code's design.
Getting ready
Our system under test for this recipe will be TaxFactorProcessor
, which interacts with TaxService
. Let's assume that the latter is part of some legacy system that, for the time being, you don't want to refactor. Also assume that TaxService
does two things. First, it performs calculations of a tax factor, and second it sends a request via a web service to update tax data for a given person. If the person's country is not specified explicitly (and by default it's not in our examples), then a default tax factor value is returned from TaxService
. In a proper code base, one should separate these two functionalities (calculation and data update) into separate classes...