To check if all values in object are equal to true :Use the Object. values() method to get an array of the object's values. Call the every() method on the array. The every method will test if all values in the array are equal to true and will return the result.
Use object. keys(objectName) method to get access to all the keys of object.
In version 23.3.0 of jest,
expect(string).toMatch(string)
expects a string.
Use:
const expected = { name:'component name' }
const actual = { name: 'component name', type: 'form' }
expect(actual).toMatchObject(expected)
result is passing test
you can use one of those:
toEqual and toMatchObject are template matchers for objects:
let Obj = {name: 'component name', id: 2};
expect(oneObj).toEqual({name: 'component name'}) // false, should be exactly equal all Obj keys and values
expect(oneObj).toMatchObject({name: 'component name'}) // true
or easly use toHaveProperty :
let Obj = {name: 'component name'};
expect(oneObj).toHaveProperty('name') // true
expect(oneObj).toHaveProperty('name', 'component name') // true
Keep in mind that .toMatchObject
checks
"that a JavaScript object matches a subset of the properties of an object."
So toMatchObject
can have unintended assertions such as:
expect({ a: 1, b: 2 }).toMatchObject({ a: 1 }); // pass
If you do want to match an object exactly, you should use .toStrictEqual
, available since jest 23
:
expect({ a: 1, b: 2 }).toStrictEqual({ a: 1 }); // fail
For a single key you can check out
expect(Boolean(obj[prop])).toBe(true | false);
For multiple key (where all must be present) you can use,
expect(Boolean(obj[prop1]) && Boolean(obj[prop2])).toBe(true | false);
For multiple key (where any one must be present) you can use
expect(Boolean(obj[prop1]) || Boolean(obj[prop2])).toBe(true | false);
Just adding this tip, thought it gave even better granularity to my own tests, especially when matching against arguments to mocked services:
expect.objectContaining({
url: expect.stringContaining('https://'),
})
Alternatively, you can use regex with expect.stringMatching
which tests the given regex against the value. Pretty neat.
expect.stringContaining expect.stringMatching
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With