Joseph Wilk wrote:
Ben Mabley has written a great article on imperative vs declarative
steps [2] which is a great read.
+1! That article was a real eye-opener to me.
But I keep realizing that, if you keep following the temptation to
super-abstract your specs - from scenarios into matchers, and in other
places - you end up reinventing Ruby. Or AppleScript. Or sendmail.cf.
It's like the XML-heavy "configuration files" in Java that Rails tries so
hard to get away from; at some point, your code becomes a generic execution
environment for your config file, which is now really the code, which you
then refactor into meta-config files...
If you get too declarative, I think you make it impossible for end users to
write stories; they can write them, sure, but they'll all require new step
matchers, which will require actual coding.
I don't think it's actually a solvable problem - something, somewhere has to
know how to fill in the form. Either you do it in the scenario, where it
gets repeated a lot, or you refactor it into the matcher, which requires
enough programming ability to understand refactoring, abstraction, and
function calls in the first place.
Jay Levitt
[2]
http://www.benmabey.com/2008/05/19/imperative-vs-declarative-scenarios-in-user-stories/
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users