That was quick, you just seemed to be getting started. I like the explanation on how to get past the mental block of where to start with the tests.
One thing I'm curious about, is the purpose of the show. It is a how-to of selected "pancakes" in the stack or your approach in creating an application from scratch?
Either way, more please, still hungry.
Much better epsoide, short and too the point, would be good to see you guys lay down the basic tenants of the story for the structure of the site, which i guess your not to sure of yet, what parts of the stack you want to use, how you plan to get there, seeing how they are implemented as well.
@Mazric: These are great suggestions. We've been letting the design evolve, to some degree, but things are firming up and we'll be sure to provide more of a road map in coming episodes.
Very interesting episode; I've been trying to get off the ground with TDD and this was quite helpful. I am a little confused though. First, is Exists() really a method for the repository? Meaning, it seemed like it was created for the sake of testing. Forgive me if that is naive, but I'm still new to this. Also, I understand that creating the interface for your repository is necessary for testing, but it seems to contradict something that Jesse said at the beginning. If TDD is meant to drive your design, and you only implement what you need and not what you *think* you'll need, doesn't the creation of an interface, at this point, a contradiction? You've written something only so you could implement your tests without knowing if you'll have an actually need for that interface in your code later. So far, we only know that the app will need a person repository so you've got an interface implemented by only one class outside of your tests. It seems like the tests have driven you to create something you don't actually need...except for testing.
Oh. It's too slowly.
Really enjoying seeing so many different aspects of a start->finish project, already including pair programming, TDD, Repository pattern. I hope you plan to continue introducing a new pattern/practice/etc each episode. I have some understanding of each, but it's nice to see the glue or process of putting them all to use in a single project.
Are you planning to release any code snippets or source? There are times when I am not fully aware of your chosen implementation details, such as where you are putting your Repository Interface in relation to namespace and project - Main vs. Test project in the solution.
I would really like to be able to subscribe to this series in iTunes I hope you have the time to make that possible, been really enjoying them but would like to have them on the go with me.
First of all I would like to say that this is good stuff. You're keeping it simple and still showing good best practices. I think you might have one error in your 3rd episode. The test method for the update of the fake repository doesn't really test the update method. Since you're getting the instance of the object the update take when you set the new name on the person instance and not when you call the update method. But guess you'll find that when you're testing against the reall repository since the get will access the db and not the dictionary. Keep up the good work!
Starting TDD always reminds me of that Mitch Hedberg joke: "People who smoke cigarettes, they say 'Man, you don't know how hard it is to quit smoking.' Yes, I do -- it's as hard as it is to start flossing."