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: