Skip to content
Set of matchers and helpers to allow you test your APIs responses like a pro.
Branch: master
Clone or download
Latest commit efdc0dc Apr 25, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Removes some leftovers for RSpec 2 support Jan 10, 2017
features Typo fix: 'jsong' vs 'json' in scenario name Mar 4, 2019
gemfiles Removed support for rspec 2 Jan 4, 2017
lib/rspec Bump 2.2.0 Apr 25, 2019
.gitignore Added basic syntax for `it_conforms_to_json` Aug 7, 2014
.travis.yml Merge pull request #25 from jeroenj/rm-rspec2 Apr 18, 2019
CODE_OF_CONDUCT.md Add code of conduct Mar 17, 2016
Gemfile
LICENSE.txt Initial commit Aug 6, 2014
README.md Adds a note that only RSpec 3 is supported to the readme Jan 10, 2017
Rakefile Initial commit Aug 6, 2014
local_env.rb fix #4: implement negation matching logic Oct 5, 2014
rspec-json_expectations.gemspec

README.md

RSpec::JsonExpectations

Build Status

Set of matchers and helpers for RSpec 3 to allow you test your JSON API responses like a pro.

Installation

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

Setup

Simply add this line at the top of your spec helper:

require "rspec/json_expectations"

Usage

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
end

And 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

Development

  • bundle install to install all dependencies.
  • bin/build to run the test suite

Contributing

  1. Fork it ( https://github.com/waterlink/rspec-json_expectations/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request
You can’t perform that action at this time.