Skip to content

Assert deeply nested values in Jest

License

Notifications You must be signed in to change notification settings

Thinkmill/jest-expect-contain-deep

Repository files navigation

jest-expect-contain-deep

Assert deeply nested values in Jest

Installation

yarn add --dev jest-expect-contain-deep

Usage

Before:

const containDeep = require('jest-expect-contain-deep');

test('values', () => {
  let massiveObject = getMassiveObject();
  expect(massiveObject.foo).toBe(expect.arrayContaining([1, 2]));
  expect(massiveObject.bar.prop).toBe(true);
  expect(massiveObject.baz).toContain('bar');
});

test('spies', () => {
  doSomething();
  expect(mySpy.mock.calls[0][0].foo).toBe(expect.arrayContaining([1, 2]));
  expect(mySpy.mock.calls[0][0].bar.prop).toBe(true);
  expect(mySpy.mock.calls[0][0].baz).toContain('bar');
});

After:

const containDeep = require('jest-expect-contain-deep');

test('values', () => {
  expect(getMassiveObject()).toEqual(containDeep({
    foo: [1, 2],
    bar: { prop: true },
    baz: expect.stringContaining('bar'),
  }));
});

test('spies', () => {
  doSomething();
  expect(mySpy).toHaveBeenCalledWith('arg1', containDeep({
    foo: [1, 2],
    bar: { prop: true },
    baz: expect.stringContaining('bar'),
  }));
});