Set of matchers and helpers for RSpec 3 to allow you test your JSON API responses like a pro.
Add this line to your application's Gemfile:
gem 'rspec-json_expectations'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rspec-json_expectations
Simply add this line at the top of your spec helper:
require "rspec/json_expectations"Simple example:
require "spec_helper"
RSpec.describe "User API" do
  subject { api_get :user }
  it "has basic info about user" do
    expect(subject).to include_json(
      id: 25,
      email: "john.smith@example.com",
      name: "John"
    )
  end
  it "has some additional info about user" do
    expect(subject).to include_json(
      premium: "gold",
      gamification_score: 79
    )
  end
endAnd the output when I run it is:
FF
Failures:
  1) User API has basic info about user
     Failure/Error: expect(subject).to include_json(
                 json atom at path "id" is not equal to expected value:
                   expected: 25
                        got: 37
                 json atom at path "name" is not equal to expected value:
                   expected: "John"
                        got: "Smith J."
     # ./spec/user_api_spec.rb:18:in `block (2 levels) in <top (required)>'
  2) User API has some additional info about user
     Failure/Error: expect(subject).to include_json(
                 json atom at path "premium" is not equal to expected value:
                   expected: "gold"
                        got: "silver"
     # ./spec/user_api_spec.rb:26:in `block (2 levels) in <top (required)>'
Finished in 0.00102 seconds (files took 0.0853 seconds to load)
2 examples, 2 failures
Failed examples:
rspec ./spec/user_api_spec.rb:17 # User API has basic info about user
rspec ./spec/user_api_spec.rb:25 # User API has some additional info about user
For other features look into documentation: https://www.relishapp.com/waterlink/rspec-json-expectations/docs/json-expectations
bundle installto install all dependencies.bin/buildto run the test suite
- Fork it ( https://github.com/waterlink/rspec-json_expectations/fork )
 - Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request