Ahh ok think I found it... In my test file at the start...
class MyListener def method_missing sym, *args, &block # ignore all messages you don't care about end def story_started(title, narrative) puts "...Started story #{title}" end def story_ended(title, narrative) puts "...Ended story #{title}" end end Spec::Story::Runner.register_listener(MyListener.new) Then I define my steps using StepGroup.new Then the Scenarios It seems to work although not very intuitive :) I'd prefer a before(:all) and after(:all) On Jun 16, 11:58 pm, Jim Morris <[EMAIL PROTECTED]> wrote: > 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 > [EMAIL PROTECTED]://rubyforge.org/mailman/listinfo/rspec-users _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users