[rspec-users] Exception handling
totochicote at gmail.com
Wed Jun 30 11:46:43 EDT 2010
On Wed, Jun 30, 2010 at 12:31 PM, David Chelimsky <dchelimsky at 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 <dchelimsky at gmail.com>wrote:
>> On Jun 30, 2010, at 9:05 AM, Marcos Chicote <totochicote at gmail.com>
>> 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?
>> 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)
> rescue Exception => e
> case e
> if OneType
> # do something
> elsif AnotherType
> # do something different
> it "..." do
> capture do
> # do stuff
> It's not perfect, but it should work.
Thanks David. I'm looking forward to RSpec-2. Is there an estimate on the
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the rspec-users