[rspec-users] Documentation for Plain-Text Stories

Jim Morris ml at e4net.com
Wed Aug 20 16:24:22 EDT 2008

aslak hellesoy wrote:
> Of how you would use it. Assume that you have something like this for
> scenario-level before/after:
> class MySteps < Cucumber::Steps # Same as Story runnner steps_for(:my)
>  Before do
>    # This block will run before all scenarios that use steps from MySteps
>    # Any scenarios not using any of these will not have this block run
>  end
>  Given /bla bla/ do
>  end
> end
> Aslak

Ok here is an example from one of my current stories.... Modified to be Cucumber-like, although I 
see you put the Before and after in the steps, I'd p[refer them to be global, but could live with 
them in the steps class. Of course where would you put the scenarios before and after? They probably 
need to be global?

(Note I am not using Rails,this is an integration test against a Web Application testing the full 
stack using net/http and some helpers to wrap that. It can test remote servers, It also uses Sequel
to test that the database gets setup properly, again a bunch of helpers lets me inject data directly 
into the database and test afterwards).

# setup several users each with their own web context
# setup global database accessor
BeforeFeature do
   # actual user names to login as
   user_names= %w(user50 user51 user52)

   $umap= {}
   $wr= {}
   user_names.each_with_index do |e, i|
     n= "user#{i+1}"
     $umap[n]= e
     $wr[n]=  WebRequest.new

   $users= {}
   $loggedin= {}

   $db= MyDBHelper.new('local', false)

# logout the users
AfterFeature do
   $wr.each_value { |w| w.logout }

# called before each scenario
# to clean up any state conatianing globals used to communicate between steps
# and log out any user that was logged in during the previous Scenario
BeforeScenario do
   $wr.each_key do |u|
     $wr[u].logout if $loggedin[u]

   $last_error= nil
   $roomid= nil
   $roomobjectid= nil
   $last_doc= nil
   $bagid= nil

Jim Morris, http://blog.wolfman.com

More information about the rspec-users mailing list