On 12 Apr 2009, at 05:19, Phlip wrote:
There's a third alternative: Your sliding scale is really a pyramid
with a peak.
The third alternative is you never _need_ to mock, yet both your
tests and target code are highly decoupled. _That_ is the goal.
Under TDD, you get that by avoiding a design smell called "expensive
setup". Your scale assumes that something actually must be set up -
either mocks, or end-to-end class models. The best tests only need a
few stubbed objects, each easy to construct.
…
The spaghetti is the design you don't want. The meatball is the
design you want. Each chopstick is a simple test, and the angle
between the chopsticks represents the _difference_ between the two
tests. If each test is simple yet is set up differently, then the
simplest code which can pass both simple tests approaches the most
elegant design.
Hi Phlip
Sorry for the late reply epicfail. I've been trying to visualise what
you mean here. Can you give me a more concrete example of what you
mean by "meatball-alone" vs "spaghetti-laden" design?
BTW, as a pretty strict almost-carnivorous grain-avoider, I approve of
your analogy =)
Cheers
Ashley
--
http://www.patchspace.co.uk/
http://www.linkedin.com/in/ashleymoran
http://aviewfromafar.net/
http://twitter.com/ashleymoran
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users