[rspec-users] AfterCurrentScenario block

Aslak Hellesøy aslak.hellesoy at gmail.com
Fri Apr 17 13:20:24 EDT 2009



Den 17. april. 2009 kl. 18.58 skrev Zach Dennis <zach.dennis at gmail.com>:

> On Fri, Apr 17, 2009 at 12:31 PM, Aslak Hellesøy
> <aslak.hellesoy at gmail.com> wrote:
>>
>>
>> Den 17. april. 2009 kl. 18.06 skrev Matt Wynne <matt at mattwynne.net>:
>>
>>> Is there currently a way to register a block to run after the  
>>> current
>>> scenario completes?
>>>
>> After.
>
> After is used after *any* scenario completes thought, right? If you
> add an After block inside of a step definition, it's going to be

Aha now I understand. Matt, would Joseph's suggestion work for you?

Aslak
>
> executed from that point on, rather than clear out at the end of the
> scenario that ran it, correct?
>
>>> If not, we've implemented one. Would anyone be interested in us  
>>> submitting
>>> it as a patch to Cucumber?
>>>
>> How is this different from After?
>
> * It clears out after the current scenario.
> * It doesn't require to be run for scenarios that don't need it.
> * It allows you to cleanly place the handler next to the code that it
> is so closely related
> * It doesn't require you know the name of the scenario(s) that would
> need it (it's simply determined by if a step definition is run)
>
>>
>> Aslak
>>>
>>> Something like
>>>
>>> Given "something that will not be rolled back after the scenario is
>>> finished" do
>>>  original = SomeClass.a_value
>>>  SomeClass.a_value = 7
>>>
>>>  AfterCurrentScenario do
>>>   # undo stuff
>>>   SomeClass.a_value = original
>>>  end
>>> end
>>>
>>> If you're interested, our use case is for pagination, where we  
>>> explicitly
>>> set the length of a page to something much shorter than the  
>>> default in a
>>> step, so that we only have to create a small number of objects to  
>>> spill over
>>> onto another page. The page length value is set on a class  
>>> variable, and
>>> would pollute other tests, so we want to reset it when the  
>>> scenario is
>>> finished.
>>>
>>>  e.g.  Given the maximum number of Users to display is 2
>>>   And there are 3 Users
>>>   When I view the Users page
>>>   Then I should see the text "see all 3 users"
>>>
>>> Matt Wynne
>>> http://blog.mattwynne.net
>>> http://www.songkick.com
>>>
>>> _______________________________________________
>>> rspec-users mailing list
>>> rspec-users at rubyforge.org
>>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
>
>
>
> -- 
> Zach Dennis
> http://www.continuousthinking.com
> http://www.mutuallyhuman.com
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list