[rspec-users] [Cucumber] Tables
dchelimsky at gmail.com
Tue Apr 21 12:56:36 EDT 2009
On Tue, Apr 21, 2009 at 11:39 AM, aslak hellesoy
<aslak.hellesoy at gmail.com> wrote:
> Being the author of Cucumber, some of you might be surprised that I ask this
> 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
> 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:
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.
> rspec-users mailing list
> rspec-users at rubyforge.org
More information about the rspec-users