Skip to content
This repository has been archived by the owner on Sep 4, 2023. It is now read-only.
/ jasmine2-json Public archive

Match objects in jasmine with legit error output

License

Notifications You must be signed in to change notification settings

UziTech/jasmine2-json

Repository files navigation

Actions Status

Jasmine 2.x-3.x Json

This is similar to jasmine-json except it works with Jasmine 2.x or 3.x

toEqualJson matcher

Comparing large objects with jasmine works great until you get an error, when it dumps the entire object to the console in a completely human unreadable format.

This package adds a toEqualJson matcher to jasmine that will generate nice diffs on error. It will tell you which keys differ, and why.

# In your spec helper
require 'jasmine2-json'

# In your specs

describe "something", ->
  it "tests json", ->
    someObject =
      one: 1
      two:
        three: 5
        four: 4

    expect(someObject).toEqualJson
      one: 1
      two:
        three: 3
        four: 4
        five: 5

It will give you the path of the failure:

JSON is not equal:
two:
  actual:   has keys ["four","three"]
  expected: has keys ["five","four","three"]

If there are several errors, it will report all of them:

it "tests json", ->
    someObject =
      two:
        three:
          four:
            five: 4
            six: 5
            seven: 6

    expect(someObject).toEqualJson
      two:
        three:
          four:
            five: 5
            six: 6
            seven: 7

Reports:

JSON is not equal:
two.three.four.five:
  actual:   4
  expected: 5
two.three.four.six:
  actual:   5
  expected: 6
two.three.four.seven:
  actual:   6
  expected: 7