[rspec-users] [Cucumber] Tables

Joseph Wilk joe at josephwilk.net
Tue Apr 21 13:57:55 EDT 2009

aslak hellesoy 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)
> 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?

I think the second way is a better way of expressing the problem, the 
output/run strategy is the problem.

What you really want is an examples table that is embedded in a step 
(different from a step table, maybe by keyword?) that causes the step to 
be run multiple times for each of the values. So rather than using 
placeholders we embedded a Examples table in the step.

Just my inital thoughts. I'll knock together an example and more ideas 
when I get home...

Joseph Wilk

> Cheers,
> Aslak
> ------------------------------------------------------------------------
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

More information about the rspec-users mailing list