Jest toEqual on js objects
jest toEqual compares recursively all properties of object with Object.is
. And in javascript an object return undefined
for missing keys:
const obj = {foo: "FOO"}
obj.foo
// "FOO"
obj.bar
// undefined
So it does not make sense to compare an object against another one that has a undefined
as value, so remove them all from the right side of the expectation to avoid confusion. In other words, this test will fail:
test("test fails => objects are similar", () => {
expect({
planet: "Mars"
}).not.toEqual({
planet: "Mars",
humans: undefined
});
});
// Expected value to not equal:
// {"humans": undefined, "planet": "Mars"}
// Received:
// {"planet": "Mars"}
Watch out!
Tweet