Written by Katherine Giron Pe
on
on
Testing a REST Web Service with Cucumber
The Cucumber book has been helpful in a way that I saw more options for testing a web service. It’s my first time to use HTTParty. In the past, I always used RESTClient gem for this kind of task.
Just think the example is overkill. Maybe we just want to know whether the JSON response includes the data we expect.
So this helps:
# features/step_definitions/rest_steps.rb
require 'httparty'
When /^the client requests GET (.*)$/ do |path|
@last_response = HTTParty.get('http://somewebsiteidontknow.com' + path)
end
Then /^the JSON response should include "([^\"]*)"$/ do |response|
JSON.parse(@last_response.body).to_s.should match response
end
Then /^the JSON response should not include "([^\"]*)"$/ do |response|
JSON.parse(@last_response.body).to_s.should_not match response
end
@people-api
Scenario: GET People
When the client requests GET /api/v1/people.json
Then the JSON response should include "A Name"
And the JSON response should not include "A Mouse"
Probably a bad way of testing is just testing whether the response is not nil.
A better example:
When /^ I GET Github (.*)$/ do |path|
@last_response = HTTParty.get('http://github.com/api/v2/json' + path)
end
Scenario: SEARCH Github user
When I GET Github /user/search/bridgeutopia
Then the JSON response should include "bridgeutopia"
And the JSON response should not include "something"