Hi Everyone
I have spinning my wheels for awhile with this problem. I am hoping a
more experienced TDD dev out there might be able to help.
I am testing an api client that consumes an internal api that handles user
registration / auth for several client applications.
I have my api_client.rb file, which lives in lib/api_client.rb:
class ApiClient
include HTTParty
protocol = (Rails.env.production? ? 'https' : 'http')
base_uri
"#{protocol}://#{AppSettings[:api][:hostname]}:#{AppSettings[:api][:port]}"
default_params :token => AppSettings[:api][:api_key]
@@ext = '.json'
def self.get_user_by_email(email, all_atts=false)
data = get("/users/by_email#{@@ext}", :query => {:email => email,
:all_atts => all_atts}).parsed_response
end
end
And here is the rspec file, which lives here: spec/lib/api_client_spec.rb
require 'spec_helper'
require 'webmock/rspec'
describe ApiClient do
it "should be able to detect if a user exists in the API" do
# stub_request(:get,
"#{API_URL}/users/by_email.json?all_atts=true&[email protected]&token=#{API_KEY}").to_return(:status
=> 200, :body => '')
res = ApiClient.get_user_by_email('[email protected]')
# res.should == {}
end
end
As you can see in the spec file, I was planning on using webmock
(https://github.com/bblimke/webmock) to mock the API responses. However,
things are breaking before that even happens. I have commented out the
stub_request line, and I still get no warning/error message from webmock.
Here is the output from my test:
... bundle exec rspec spec/lib/api_client_spec.rb --format=d
ApiClient
should be able to detect if a user exists in the API (FAILED - 1)
Failures:
1) ApiClient should be able to detect if a user exists in the API
Failure/Error: res =
ApiClient.get_user_by_email('[email protected]')
NoMethodError:
undefined method `info' for nil:NilClass
# ./lib/api_client.rb:30:in `get_user_by_email'
# ./spec/lib/api_client_spec.rb:25:in `block (2 levels) in <top
(required)>'
Finished in 17.37 seconds
1 example, 1 failure
Failed examples:
rspec ./spec/lib/api_client_spec.rb:23 # ApiClient should be able to detect
if a user exists in the API
I included the information about the webmock-ing *just in case*. It seems
like the problem is happening before the ApiClient can even make its
request. Any help is much appreciated!
PS - google groups will not let you post an email address inside a post.
the test email addresses have been hidden.
--
SD Ruby mailing list
[email protected]
http://groups.google.com/group/sdruby