Junior Developer: I can’t write a test for this code, it’s too hard to test
Senior Developer: Who wrote the code?
JD: I did
SD: You’re saying the code you wrote is hard to test. If you wrote the code, who made the code hard to test?
JD: I guess I did
SD: Right, so can you restructure the code to make it easier to test?
JD: Yes, looking at it again, I could break it down into smaller methods that would be easier to test individually
SD: Great! In future, how can we write the code so make it easier to test?
JD: Well if I think about how I’m going to test the code as I write it, then I can definitely write it in a way that would make it easier to test
SD: Great! And if you write your tests before you write your code, that would help even further with that approach, right?
JD: Yes, I guess it would.
TDD is not rocket science.