[rspec-users] RSpec newb - why is my negative test not passing?

Jferg johngferguson at gmail.com
Thu May 6 21:03:08 EDT 2010


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:



More information about the rspec-users mailing list