On Jun 30, 2010, at 10:46 AM, Marcos Chicote wrote:

> On Wed, Jun 30, 2010 at 12:31 PM, David Chelimsky <dchelim...@gmail.com> 
> wrote:
> On Jun 30, 2010, at 9:29 AM, Marcos Chicote wrote:
> 
>> On Wed, Jun 30, 2010 at 11:12 AM, David Chelimsky <dchelim...@gmail.com> 
>> wrote:
>> On Jun 30, 2010, at 9:05 AM, Marcos Chicote <totochic...@gmail.com> wrote:
>> 
>>> I don't think so, but I don't really know how to check it programatically.
>>> I don't mean exceptions in before/after methos, but inside it() method
>>> 
>>> I would like to write something like this:
>>> after(:each) do
>>> if exception_occured_on_it_method?
>>> do_something
>>> end
>>> end
>>> 
>>> Is that possible?
>> 
>> What problem are you trying to solve?
>> 
>> I'm using rspec to build tests using Watir.
>> 
>> On before(:each), I create the browser instance and login lazily to a web 
>> page (if the browser exists, I use that instance, if it does not, I create a 
>> new one). I'm using this lazy approach in order to save the time of openning 
>> a new browser and login for each test (I could close the browser on 
>> after(:each) but this is faster).
>> 
>> I most cases (when test are passed), everything works great. The problem is 
>> that sometimes the page I'm trying to access doesn't load (or there is some 
>> other non functional problem), the browser keeps wating and an timer that I 
>> implemented timesout.This timeout raises an exception that makes the test 
>> fail, but does not close the browsers windows (that keeps wating for the 
>> response), making following tests to fail. 
>> 
>> If I could handle timeout exception in the way I posted before, I could 
>> close the browser and the next test will open a fresh one.
>> 
>> (Note: this is only and example, there are some other exceptions thay might 
>> occur, html element missing for example, that I want to handle the same way 
>> and that's why I need a unified mechanism)
> 
> There's nothing in RSpec to explicitly handle this for you. There are tools 
> that will likely be available in RSpec-2 by the time we do a final release, 
> but they won't work yet for your goal, so for the short run I think you need 
> to manage this in each example manually. I'd recommend something like:
> 
> def capture(exception)
>   begin
>     yield
>   rescue Exception => e
>     case e
>     if OneType
>       # do something
>     elsif AnotherType
>       # do something different
>     end
>   end
> end
> 
> it "..." do
>   capture do
>     # do stuff
>   end
> end
> 
> It's not perfect, but it should work.
> 
> HTH,
> David
> 
> 
> Thanks David. I'm looking forward to RSpec-2. Is there an estimate on the 
> release date?

It's been in beta for a while - I released beta.15 this morning. Planning to do 
an RC sometime in July, at which point it will be feature complete and we'll 
just do bug fixes and documentation enhancements for the final release.

Cheers,
David
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to