I'm not using Rails, I am doing end to end integration testing talking to the server via net/http, so RailsStory is not involved.
I think the listeners may do it, I can use story_started like before(:all) and story_ended like after(:all) which will be great, presuming story_ended is always called even after a failure. However I am missing the place where that listener gets registered, I am using the... Story "description", %{...}, :steps_for => steps do Scenario "sdsdsd" do ... end end syntax, so where is the listener set? Thanks On Jun 16, 6:32 pm, David Chelimsky <[EMAIL PROTECTED]> wrote: > On Jun 16, 2008, at 6:18 PM, Jim Morris wrote: > > > Along similar lines is there a way to do the equivalent of > > before(:all) and after(:all) or after(:each) in stories? > > > Basically I have a similar situation as above, but I need to make sure > > the user is logged out after each scenario. or that the user is logged > > in once at the start of all scenarios then logged out after them > > regardless of errors etc. > > Each scenario is run in its own instance of RailsStory, so it's got a > new session (IntegrationSession). So you *should* get this isolation > implicitly. > > There are callbacks you can use if you create and register a listener, > but they won't have access to the same scope that exists inside the > steps. Here's how you do it: > > class MyListener > def method_missing sym, *args, &block > # ignore all messages you don't care about > end > > def run_started(num_scenarios); end > def story_started(title, narrative); end > > etc > end > > Seehttp://rspec.info/rdoc/classes/Spec/Runner/Formatter/Story/PlainTextF... > , which implements all the callback methods (we need better docs for > it, but everything is there - don't use collected_steps though - that > should really be marked nodoc). > > Cheers, > David > > > > > Thanks > > > On Jun 14, 7:40 am, David Chelimsky <[EMAIL PROTECTED]> wrote: > >> On Jun 14, 2008, at 5:03 AM, Mikel Lindsaar wrote: > > >>> I find myself doing this: > > >>> Scenario "logged in user visiting the home page" do > >>> Given "A logged in user" do > >>> a_logged_in_user > >>> end > > >>> When "..." > >>> Then "..." > >>> end > > >> Things have evolved a bit since Story Runner first came out. The > >> approach you are using here is what we call in-line steps, and was > >> the > >> only option back then. > > >> You can now use disconnected steps in both plain text and Ruby: > > >> require 'steps/visitors' > > >> Story "logged in users see more stuff", %( > >> As a registered user > >> I want to see more stuff than non-registered users > >> So I can feel like I'm getting some benefit in return for giving > >> up my personal information > >> ), :steps => :visitors do > >> Scenario "logged in user visits home page" do > >> Given "I am logged in as David" > >> When "I visit the home page" > >> Then "I should see the message 'Welcome David'" > >> end > >> end > > >> # in steps/visitors > > >> steps_for :visitors do > >> Given "I am logged in as $name" do |name| > >> # create a user w/ name and log in as that user > >> end > > >> When ".." > >> Then ".." > >> end > > >> This approach really cleans up the story code leaving the informative > >> bits while hiding the redundant detail. > > >> HTH, > >> David > > >>> The a_logged_in_user method is a helper method in helper.rb which > >>> sets > >>> up the state so that the user can browse the website. > > >>> Later in the story of course, I can just do 'Given "A logged in > >>> user" > >>> and it will get the previous definition. > > >>> Is there any way to avoid that duplicated Given call at the top of > >>> almost every story? > > >>> Mikel > >>> _______________________________________________ > >>> rspec-users mailing list > >>> [EMAIL PROTECTED] > >>>http://rubyforge.org/mailman/listinfo/rspec-users > > >> _______________________________________________ > >> rspec-users mailing list > >> [EMAIL PROTECTED]://rubyforge.org/mailman/listinfo/rspec-users > > _______________________________________________ > > rspec-users mailing list > > [EMAIL PROTECTED] > >http://rubyforge.org/mailman/listinfo/rspec-users > > _______________________________________________ > rspec-users mailing list > [EMAIL PROTECTED]://rubyforge.org/mailman/listinfo/rspec-users _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users