If we’ve learned the Three Steps of TDD and the Three Laws of TDD, what keeps us from doing Test-Driven Development? Maybe it’s not knowing how to write unit tests. Or more specifically, not knowing how to write unit tests against “real” code.
And what keeps us from writing unit tests against our own code? I bet it’s not knowing what our many options are.
Dependency Injection can unlock your code.
Birth of a presentation
That was the thought process I had when I was first asked to speak at a technical conference.
My talk Test-Driven Development for iOS (and anything) …by Controlling Dependencies at MCE 2014 in Warsaw could have crashed and burned:
- It had an awkward title.
- It wasn’t really about TDD.
- I’d never spoken at a conference.
- I uttered many ums and ahs, and touched my mouth nervously.
But it was rated “Best Talk at MCE”!
Watch “Controlling Dependencies”
Here’s a rough outline:
- 3 Types of Unit Tests
- How Interaction Tests Work
- 4 Types of Dependency Injection
- Example: Writing Tests for Networking Calls (using a hand-rolled mock)
- Refactoring Test Code for Readability
When have an hour, pour yourself a drink and watch. Or take it in sections. The talk itself is 42 minutes, followed by Q&A.
Here are the books on my last slide.
- Working Effectively with Legacy Code by Michael Feathers
- Dependency Injection in .NET by Mark Seemann
- The Art of Unit Testing by Roy Osherove
In addition to the video, I’m making my slides available as a bonus. You can access the bonus PDF here.
What successes have you had applying Dependency Injection to your code? Did it help you test something that used to resist testing? Did it help in other ways? Share your story in the comments below.