Most of the time working with existing code is hard when you TDD, unless there
is an existing contract. If there is an abstract class or interface, lucky you
:). Contracts enable us to mock dependencies which is essential when unit
testing, as you do not want to test code that