On 21 Oct 2009, at 09:46, Pat Maddox wrote:
Response written as I go through the slides, and late at night under sleep deprivation ;)
Seems fitting, I wrote them under the exact same conditions =)
* 57 juicy slides in half an hour? Damn dude.
Well, might have had about 45-50 mins, but there were plenty of questions in the middle. Didn't have time to prune the slides down before the presentation. I was ready to collapse at the end :)
Would have had longer, but Boxedup.com sponsored free pizza at the bar opposite. So literally before I'd shut my laptop lid, there was a mass stampede out of the building...
* Not a fan of the "defining an interface" service example. A single method named #query that accepts a string that appears to have the real command is not much of an interface. What about something like service.should_receive(:store).with(:first_name => 'Fred', :last_name => 'Flintstone') ?
I think you're right. Your example is better.
* I dig the be_equivalent_xml_to matcher
Our implementation is a bit simplistic, but it's still useful. I've put it up as a gist for it[1] in case anyone else finds it useful.
* On the Simulating Situations slide I would stub the call to #save instead of expecting it. You're just setting up context for the example to run in.
Ah, I just didn't know off the top of my head how to make a stub method raise an error. You're right though, it would be much better if I had.
* may be a style thing but in your Degrees of Freedom shapes examples I don't like creating the shapes in a before. Just inline it
It's funny you say that, when I wrote it I was thinking it was not necessary to use a before block, but "that's the style I like". I almost always separate out the SUT from the examples. I think it goes back to the days when I thought in rigid Given-When-Then terms.
* the shape example where you pass in a mock is really weird to me. What are you trying to illustrate? A different example might be more effective (or I just need to hear the commentary that goes with that slide)
Someone else raised an issue with the same slide, so it must really suck. The fact the example is written around a getter should have raised an exception in my head (NotEnoughSleepError). A much better example is slide 30 (Hiding Random Behaviour) where @first and @values are used in the same manner (to reduce the need to triangulate to prove the implementation is not degenerate).
Over all it looks like a great introduction to the benefits, use, and pitfalls of mocks. Thanks for sharing.
Thanks for the feedback! It's the most detailed I've had so far. If I repeat the presentation I'll make all the changes you suggested. Except for the liberal use of before blocks :)
Also I should probably add that at the end, when I was reading the references, one of the comments I made was along the lines of "I finally got round to reading the RSpec Book chapter on mocks the other day, and I was really disappointed. It said everything I was trying to, really clearly, and I was tempted to just turn up and read it out loud. So go look at that next." I daren't read the rest of the new chapters in case it makes the rest of my job redundant =)
Cheers Ashley [1] http://gist.github.com/215089 -- http://www.patchspace.co.uk/ http://www.linkedin.com/in/ashleymoran http://aviewfromafar.net/ _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users