-
-
Notifications
You must be signed in to change notification settings - Fork 34.2k
Description
What is the problem this feature will solve?
(I tried searching for related issues, but couldn't find one, sorry if this is a duplicated)
One thing I miss when using node:test and node:assert from jest related tests is the expect(A).toMatchObject(B) api. Within large production systems, a we usually have large objects with multiple deep properties, with assert.matchObject we could test the same way as assert.deepStrictEqual, but only specifying expected properties we want to test out with a much nicer DX. Obviously a assert.notMatchObject should also be present.
Current behavior:
const myObjectToTest = {
a: 1,
b: 2,
c: {
d: 3,
e: 4,
f: {
g: 5
}
}
}
// For my specific test, I want to assert `myObjectToTest.b` and `myObjectToTest.c.f.g`.
assert.equal(myObjectToTest.b, 2);
assert.equal(myObjectToTest.c.f.g, 5);
// If I wanted to check against another object or using a object (better DX)
// I must specify ALL fields (even the one that doesn't matter for my specific test)
assert.deepStrictEqual(myObjectToTest, {
a: 1,
b: 2,
c: {
d: 3,
e: 4,
f: {
g: 5
}
}
});What is the feature you are proposing to solve the problem?
With assert.matchObject:
assert.matchObject(myObjectToTest, {
b: 2,
c: {
f: {
g: 5
}
}
});It should ensure equality only for properties assigned to the second parameter. myObjectToTest could have 10000 other attributes or be literally the same as the second parameter, it would pass. Whenever a property declared inside the second object is not present in the first one, an AssertionError should be thrown.
Of course this is a small example that could be tested separately, but it is a perfect DX fit for large objects.
What alternatives have you considered?
I'm creating this feature request with a jest like API in mind, however any alternatives that also fixes this problem are welcome :) I'm also open to working on this, but first I need some kind of guidance :)
Metadata
Metadata
Assignees
Labels
Type
Projects
Status