On Tue, Apr 21, 2009 at 11:39 AM, aslak hellesoy <aslak.helle...@gmail.com> wrote: > Being the author of Cucumber, some of you might be surprised that I ask this > question: > > How should I go about to implement a Cucumber feature and step definition > with the following data? > http://gist.github.com/99220 (just look at the first file for now)
You left out: | Vegetarian | N | N | N | > > Imagine I'm opening a restaurant where customers are asked for their > religion. Based on what they answer, they will be presented with a tailored > menu. (Apologies in advance if I'm ignorant about what different people it). > > In Cucumber, there are several ways to put this table in a feature. It can > be part of a table in a Scenario Outline's Examples section > (http://wiki.github.com/aslakhellesoy/cucumber/scenario-outlines), or it can > be sent to a Step as a multiline argument > (http://wiki.github.com/aslakhellesoy/cucumber/multiline-step-arguments). > > In either case, I'm not happy about the feature and step definitions I end > up with. The Scenario Outline version has annoying duplication. I have to > duplicate each meat 3 times! This makes it hard to read and edit. The > multiline step argument version isn't much better. If a menu for a religion > is wrong I'll only get one error, the error won't tell me what's wrong > (unless I explicitly craft my error messages in the step definition) and max > one failure will show (there is only one scenario). > > There should be a better way to express this kind of tests. But I'm not sure > how. Is there a smarter way with the current Cucumber? If not, how would you > *like* to express this sort of problem? How about something like this: http://gist.github.com/99235 That doesn't require a new construct and I *think* it solves the problem (obviously I haven't run it). An alternative would be to add a new rule or construct in which the step definition can drive things a bit more. Something like http://gist.github.com/99244 where the fact that the step def accepts 3 block args would let it consume the next three columns in the table. Not sure how crazy that would be - just an idea. WDYT? > > Cheers, > Aslak > > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users