to have a value satisfying

  • <object> to have a value [exhaustively] satisfying <assertion>
  • <object> to have a value [exhaustively] satisfying <any>

Asserts that an object contains at least one value that satisfies a given value, function or other assertion.

Note that this assertion fails if passed an empty object as the subject.

expect(
    { foo: { a: 1 }, bar: { b: 2 }, baz: { c: 3 }, qux: { d: 4} },
    'to have a value satisfying',
    { a: 1 }
);
 
expect(
    { foo: 0, bar: 1, baz: 2, qux: 3 },
    'to have a value satisfying',
    function (value, index) {
        expect(value, 'to be a number');
    }
);
 
expect(
    { foo: 0, bar: 1, baz: 2, qux: 3 },
    'to have a value satisfying',
    'to be a number'
);

The expected value will be matched against the value with to satisfy semantics, so you can pass any of the values supported by to satisfy. To use strict to satisfy semantics, you can use the "exhaustively" flag:

expect({ foo: { a: 1, b: 2 } }, 'to have a value satisfying', { a: 1 });
expect({ foo: { a: 1, b: 2 } }, 'to have a value exhaustively satisfying', { a: 1 });
expected { foo: { a1b2 } } to have a value exhaustively satisfying { a1 }

In case of a failing expectation you get the following output:

expect(
    { foo: [10, 11, 12], bar: [14, 15, 16], baz: [17, 18, 19] },
    'to have a value satisfying',
    'to have items satisfying',
    expect.it('to be a number').and('to be below', 8)
);
expected object to have a value satisfying
to have items satisfying expect.it('to be a number')
        .and('to be below'8)