On Fri, Sep 26, 2008 at 6:30 AM, Matt Wynne <[EMAIL PROTECTED]> wrote: > Going back to the debate about keeping state between steps, I found myself > with the mild urge to be able to write this today: > Given there is a user > And the user has 20 friends > Then I should see a thumbnail of each of the users's friends > Which should be a link to the user profile page for that friend > NB: An idiom in this which may be songkick-only but was inspired by what > we've read on this list, and worth explaining: "the user" as in "the user > has 20 friends", means User.first in rails. If there's more than one user > when this step runs, it will flunk, because the English no longer works. > So anyway, what I was thinking was that it would be nice to be able to refer > to the last thing I said I should be able to see, and decorate it with more > specification in a subsequent step or steps. > Obviously, I could roll these into one long Then step, but maybe this is > more elegant... > Just thinking out loud. I have no idea what the steps code would look like. > WDYT?
One of the promises of using treetop is the ability to extend the grammar yourself to include keywords like Which. As for maintaining state across steps, I know that Aslak recommends avoiding this on the cucumber wiki, but I can tell you I've not once (as in never ever ever) been bitten by doing this. I've got a couple of helper methods I use to create and retrieve instance variables that are uniquely named. See http://gist.github.com/13087. Including that module in env.rb allows me to do this: Given a user with login "ernie" and password "rubber" And a user with login "bert" and password "duckie" And ernie is assigned the admin role And bert is assigned the contributor role ... Given /^a user with login "(.*)" and password "(.*)"$/ do |login, password| create_user_named(login, password) do |user| set_ivar :user, login, user end end Given /^(.*) is assigned the (.*) role$/ do |login, role| get_ivar :user, login do |user| user.add_role(role) end end ... thus creating and retrieving instance variables named user_ernie and user_bert with different roles. Other people have experiences, positive or negative, sharing state across steps with instance variables? > cheers, > Matt > ---- > http://blog.mattwynne.net > http://songkick.com > In case you wondered: The opinions expressed in this email are my own and do > not necessarily reflect the views of any former, current or future employers > of mine. _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users