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
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users