Matt,

 

I am open to referring to separate documentation/scenario.  It would be nice if 
I can optionally make it appear in the tests but that is a nice to have.  Is 
this just an example/idea or is it possible to do this currently?

 

Thanks,

Wes

 

From: rspec-users-boun...@rubyforge.org 
[mailto:rspec-users-boun...@rubyforge.org] On Behalf Of Matthew Krom
Sent: Thursday, April 09, 2009 2:44 PM
To: rspec-users
Subject: Re: [rspec-users] Reuse of Cucumber Features

 

Two other brainstorms:

Brainstorm 1:
     Given an empty flights database
        And aircraft XX1 flight number XX0001 departs on 03Mar2009 at 1000
        And aircraft XX1 flight number XX0002 departs on 03Mar2009 at 1400
        And aircraft XX1 flight number XX0003 departs on 03Mar2009 at 2100

Brainstorm 2:
   # Sets up all the flights in your scenario
   Given flight database scenario A 

In #2, you have to reference separate documentation on what is contained within 
scenario A.  This may or may not be acceptable to your process, but it can work 
quite well if you are comfortable referring to the separate documentation to 
keep things straight. 

Matt Krom

         

                
                I know this is an older post but I have a similar but different 
set of scenarios I need to handle.  I have a set of flight related scheduling 
features, such as delay, reschedule, and cancel, each with multiple scenarios 
that have an effect on later flights in the schedule (there are a lot of 
scenarios actually).  What (I think J) I need is a set of flights that I can 
reuse, in a Background: given section, by all of these features and scenarios, 
that is defined in a way that is reusable and visible in each of the feature 
definitions.
                
                Is this possible?  Is there a better way to do this?
                
                Example:
                
                Feature: Delay flights with down line adjustments
                 As a flight scheduler
                 I want to delay a flight and have the down line flights 
adjusted for different periods
                 So I can more quickly update a schedule when events happen
                
                   Background:
                     Given I have the following flights scheduled:
                       |aircraft | flight number | dept date | dept time |
                       | XX1      |  XX0001              | 03Mar2009 |  1000    
    |
                       | XX1      |  XX0002              | 03Mar2009 |  1400    
    |
                       | XX1      |  XX0003              | 03Mar2009 |  2100    
    |
                       | XX1      |  XX0004              | 04Mar2009 | 1000     
    |
                
                  Scenario:  delay flights with down line adjustments for same 
dept date as delayed flight
                     When I delay flight XX001 by 5 mins
                     Then XX001 departs at 1005
                     Then XX002 departs at 1405
                     Then XX003 departs at 2105
                     Then XX004 departs at 1000
                
                OR
                
                  Scenario:  delay flights with down line adjustments for same 
dept date as delayed flight
                     When I delay flight XX001 by 5 mins
                     Then the scheduled flight should be
                       |aircraft | flight number | dept date | dept time |
                       | XX1      |  XX0001              | 03Mar2009 |  1005    
    |
                       | XX1      |  XX0002              | 03Mar2009 |  1405    
    |
                       | XX1      |  XX0003              | 03Mar2009 |  2105    
    |
                       | XX1      |  XX0004              | 04Mar2009 | 1000     
    |
                
                There are many more scenarios.
                
                Is there a nice way to removed the duplication that is here, 
especially since I will need a similar set of flights for other scheduling 
change scenarios?  Does anyone see a nice way to simplify the scenarios?
                
                Great tool by the way.
                
                Thanks,
                Wes

         

        Have you seen this?
        
        
http://www.benmabey.com/2008/05/19/imperative-vs-declarative-scenarios-in-user-stories/
        
        Another way to remove duplication (and noise) from Cucumber steps is 
the hide the details in the Ruby code that implements the step, and write a 
much more general step in the feature file like this:
        
               Given there are 3 flights departing on the same day
               And the flights all leave at different times
               And there is another flight leaving on the following day
               When the earliest flight is delayed by 5 mins
               Then the flights on the first day should all be delayed by 5 
minutes
               And the flight on the second day should be unaffected
        
        These kind of steps can be clearer to read, but the trade-off is that 
your underlying step code gets more complex as you start writing logic to 
deliver these specific scenarios. Still, if you're clever about it, these 
'declarative' steps can still be pretty re-usable.
        
        HTH,
        Matt

 

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to