Juanma Cervera wrote:
I am specing a feature, maybe at more high level of what it should be,
and this makes scenarios that involves more that one rails controller.

Is it possible or convenient?

I do not think its a problem touching multiple controllers if that's what is required for the user to achieve some specific value from the system. The value is king.

I have scenarios like this (although it's only an unreal example):

Feature: Making a reservation for a service.
  Scenario: Making the reservation
    Given I want to make a reservation for a service
    When I choose the service
    Then I see the page 'service1/1/options'
    When I select option 1
    And I click on "submit"
    Then I will be asked for a confirmation
    When I answer 'Yes'
    Then I see "Ok"
    And I go to "/services/1"

Is this ok or I should define the features with only one single
iteration?

I find deviating from the ordering of Given/When/Then can sometimes produce scenarios that are hard to read and conceptualise. So I personally avoid multiple iterations in a single scenario. This however does not mean you should not touch multiple controllers.

I would suggest perhaps something like this for your example scenario:

--
 Scenario: Making a successful reservation for massage service
   Given I have gone to the reservation page
   And I selected the service "massage"
   When I choose the option "extra oil"
   And I press the "make reservation" button
   And I confirm my reservation
   Then I will see "Ok, your reservation has been made for blah. Thanks!"
   And I will see the total price
   And I will be redirected to the service.
Scenario: Making a reservation but cancelling at confirmation

--
My scenario would still fail based on the 'thens' you mention. For example if I 
don't see the page 'service1/1/options' then I can never click the option for 
extra oil. So your thens have become implied. They are part of the journey, the 
destination (and value) is seeing I've made a reservation.


Looking at your initial steps this one jumps out at me:

   Given I want to make a reservation for a service

While it gives intent and a goal it does not explain the start state so I would question its usefulness. It feels more like the scenario name.


--
Joseph Wilk
http://blog.josephwilk.net
Juanma Cervera.

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

Reply via email to