RSpec newb - why is my negative test not passing?

Why won’t this test work?

I am trying to use RSpec to drive a negative test where my code will
throw an exception which it does however, the test does not pass. It
fails due to my exception. However, I am using should
raise_exception:

describe “Making non-existent url tiny” do

it “should raise exception” do
url = “tttttt.dddddd”
exception_new = Exception.new “Test URL Error”

TinyUrlService.should_receive(:get).with(url).and_raise(exception_new)

TinyUrlService.make_tiny(url).should raise_exception

end
end

===========================================

Here is the code under test:

require ‘httparty’

class TinyUrlService
class InvalidUrl < Exception
def intialize original_e
super original_e.message
end
end

include HTTParty

base_uri ‘tinyurl.com

def self.make_tiny (targetUrl)
return get(‘/api-create.php’, :query =>{:url =>
validate_url(targetUrl)})
end

private
def self.validate_url(tiny_url)
get(tiny_url)
return tiny_url
rescue Exception => e
raise InvalidUrl.new(e)
end

end

=====================================
Here is the exception reported:

TinyUrlService::InvalidUrl: Test URL Error
…/lib/tiny_url_service.rb:23:in validate_url' ../lib/tiny_url_service.rb:15:in make_tiny’
/Users/johnferguson/ruby/flitter/specs/tiny_url_spec.rb:11:
-e:1:in `load’
-e:1:

On Thu, May 6, 2010 at 9:03 PM, Jferg [email protected] wrote:

it “should raise exception” do
url = “tttttt.dddddd”
exception_new = Exception.new “Test URL Error”

TinyUrlService.should_receive(:get).with(url).and_raise(exception_new)

lambda {TinyUrlService.make_tiny(url)}.should raise_exception

end
end


Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Github: rubyredrick (Rick DeNatale) · GitHub
Twitter: @RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale

Thanks, next time I’ll read the documentation with more attention to
what is written there. It works as you said and as is documented.