In this exercise you need to use a spy or a mock to test the code.
Today’s exercise is The Doppelganger kata, and in particular the DiscountApplier problem. Read the code - the DiscountApplier class. It contains two versions of a method that has two different bugs, marked with comments. How could you write tests that would fail because of each bug? Discuss in pairs. Don’t write any code at this point, just talk.
Explain what a test double is and how we could use one in this problem. You could explain that for this particular case we might need a spy or mock and how that is different from a stub.
Ask people to write tests for each of the bugs using test doubles. Each test should fail because of a bug, and pass if you change the code to fix the bug. Do not change the DiscountApplier class otherwise.
Why did we need a test double in order to test this code? Ask When should you use this?