[rspec-users] Reuse of Cucumber Features
Matt Wynne
matt at mattwynne.net
Thu Apr 9 17:25:36 EDT 2009
On 9 Apr 2009, at 20:36, Zach Dennis wrote:
> On Thu, Apr 9, 2009 at 3:30 PM, Zach Dennis <zach.dennis at gmail.com>
> wrote:
>> On Thu, Apr 9, 2009 at 2:56 PM, Matt Wynne <matt at mattwynne.net>
>> wrote:
>>>
>>> On 9 Apr 2009, at 17:47, Zach Dennis wrote:
>>>
>>>> On Thu, Apr 9, 2009 at 9:29 AM, Williams, Wesley
>>>> <Wesley.Williams at sabre.com> wrote:
>>>>>
>>>>> Matt,
>>>>>
>>>>> Hmm, I think this is one way to do it. I will need to get my
>>>>> customer
>>>>> to think differently about defining the requirements. They
>>>>> really like
>>>>> the tables.
>>>>
>>>> Some times table just work best. I love writing scenarios with
>>>> natural
>>>> language, but I've hit many cases where the inputs and outputs are
>>>> best displayed as a table, and it's easier for the customer to
>>>> gr0k,
>>>> then to read a short novel.
>>>>
>>>> This kind of re-use that you seem to need sounds like a potential
>>>> feature for Cucumber. A way to utilize an external file to house a
>>>> table of data. e.g.:
>>>>
>>>> Background
>>>> Given I have the following set of flights:
>>>> | foo | bar | baz |
>>>> ...
>>>>
>>>> Would become
>>>>
>>>> Background
>>>> Given I have the following set of flights:
>>>> FromFile: flights/scheduleA
>>>>
>>>> And then you'd have the flights/scheduleA house:
>>>>
>>>> | foo | bar | baz |
>>>> ...
>>>>
>>>> Cucumber could dump in the table data it found from the file, and
>>>> print it out when running the scenarios, and it allows some sets of
>>>> sample data be re-used easily, in an understandable manner.
>>>>
>>>> WDYT?
>>>
>>>
>>> This is a good idea - people do this with Fit (as opposed to
>>> Fitnesse) and
>>> go straight to a spreadsheet for the examples.
>>>
>>> I don't see why it needs a new Cucumber feature though - you could
>>> easily
>>> (and more flexibly) write a custom step yourself to load in the
>>> data from an
>>> external file, right?
>>
>> That's true, but why does everyone need to write their file loading
>> step/code? It seems like something where flexibility really doesn't
>> benefit anyone, unless you are doing something unique and special,
>> which I think is different than simply being able to store example
>> tables in an external file.
>
> One more though, how would you process your example table from a file
> within a step? Would you do a giant "eval" after reading the contents?
> Or would you reach into the guts of Cucumber to programmatically build
> the right thing? Is there another way? I've never done it, so just
> asking how you would approach this by writing your own step,
Not sure - I've not needed to do it yet, which is why I would balk at
generalising it into the Cucumber framework - seems a bit premature :)
I guess I would replace this:
Given I have the following set of flights:
| foo | bar | baz |
With this:
Given I have the set of flights specified in "test_data/foo.xls"
Then in that step matcher I'd open the spreadsheet, loop through the
rows and just do the same as I would with the hashes I'd normally get
from Cucumber I suppose.
Obviously you couldn't do this for scenario outline tables without
extending Cucumber, but that's another issue entirely.
Matt Wynne
http://blog.mattwynne.net
http://www.songkick.com
More information about the rspec-users
mailing list