On 13/03/2008, Bart Zonneveld <[EMAIL PROTECTED]> wrote:
>
> Hey list,
>
> I'm refactoring some much-used functionality into a common_steps step
> group. Methods like this are in there:



Hi Bart / list

This is not quite what you are thinking but I've noticed something strange
about steps_for.  Basically when the steps are define the Given, When, Then
methods run in the context of a StepGroup, but when they run they have a
different context.

So to call a method in a step group you have to do something like this:

steps_for :login do
  def sign_in(page, username, password)
     # ...
  end

  Given "a signed-in support user" do
    # ...
    @page = browser.open_page("/signin")
    steps_for(:login).sign_in(@page, "[EMAIL PROTECTED]",
"support-password")
  end

  # ...
end

(If you wonder about the code, I'm using Selenium not Rails Stories)

Two consequences of this scoping :
* you have to use steps_for(:login) as the explicit receiver of the sign_in
method
* you have to pass in the instance variable because when the code runs,
sign_in puts the instance variables in the StepGroup, not in whatever object
the runner uses (didn't bother to figure that out)

Really strange behaviour - I wonder if there's a better way to do this.  Am
I going about it the wrong way by using methods in steps_for?  Comments
welcome

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

Reply via email to