expectJsonLike
Performs partial equal of JSON objects.
- Allows Regular Expressions.
- Allows Assert Expressions and Handlers.
- Order of items in an array doesn't matter.
Syntax
js
expectJsonLike(json)
expectJson(template-name)
expectJson(file-path)
expectJson(file-name)
expectJsonLike(path, json)
Usage
โ Correct Usage
js
await spec()
  .get('api/health')
  .expectJsonLike({
    message: 'OK'
  });
Arguments
> json (object)
Response json body.
> path (string)
Json path. See json-query for more usage details.
Examples
Partial Deep Equal
js
const { spec } = require('pactum');
// actual response body has more fields
await spec()
  .get('https://reqres.in/api/users/1')
  .expectJsonLike({
    "data": {
      "first_name": "George",
      "last_name": "Bluth"
    }
  });
Using data template
js
const { spec, stash } = require('pactum');
stash.addDataTemplate({
  'FIRST_USER': {
    "data": {
      "id": 1,
      "email": "george.bluth@reqres.in",
      "first_name": "George",
      "last_name": "Bluth",
      "avatar": "https://reqres.in/img/faces/1-image.jpg"
    }
  }
});
await spec()
  .get('https://reqres.in/api/users/1')
  .expectJsonLike('FIRST_USER');
Using file path
js
const { spec } = require('pactum');
await spec()
  .get('https://reqres.in/api/users/1')
  .expectJsonLike('./data/user.json');
Using file name
js
const { spec } = require('pactum');
await spec()
  .post('https://reqres.in/api/users')
  .expectJsonLike('user.json') // searches for the file inside the data folder
  .expectStatus(201);
Regular Expressions
js
const { spec } = require('pactum');
await spec()
  .get('https://reqres.in/api/users/1')
  .expectJsonLike({
    "data": {
      "id": /\d+/,
      "first_name": "George",
      "last_name": "Bluth"
    }
  });
Assert Expressions
Assert Expressions helps to run custom JavaScript code on a JSON that performs user defined assertions.
- Expression should contain $Vto represent current value.
- Expression should be a valid JavaScript code.
- Expression should return a boolean.
NOTE
String containing $V will be automatically treated as a Assert Expression.
js
const { spec } = require('pactum');
await spec()
  .get('https://reqres.in/api/users/1')
  .expectJsonLike({
    "data": {
      "id": "typeof $V === 'string'",
      "first_name": "George",
      "last_name": "Bluth"
    }
  });
await spec()
  .get('https://reqres.in/api/users')
  .expectJsonLike({
    "data": "$V.length === 6"
  });
Using json path
js
const { spec } = require('pactum');
await spec()
  .get('https://reqres.in/api/users/1')
  .expectJsonLike('data.first_name', 'George');