断言一个对象与另一个具有number或null字段的对象深度相等



我有这个对象

obj1 = {
a: 1,
b: 2,
c: 3 // or null,
}
obj2 = {
a: 1,
b: 2,
c: null // or 3
}

如何在这些对象上断言深度相等?

expect(obj1).to.deep.eql(obj2);

我知道上面的方法不是我想要的。

我需要一个或条件来考虑nullnumber部分。

我可以这样做:

expect(obj1.c).to.be.within([3, null])
delete obj1.c
delete obj2.c
expect(obj1).to.deep.eql(obj2)

可以使用chai-json-pattern插件的AND/OR逻辑运算符

const chai = require('chai');
const chaiJsonPattern = require('chai-json-pattern').default;
chai.use(chaiJsonPattern);
const { expect } = chai;
describe('69158740', () => {
it('should pass', () => {
const obj1 = { a: 1, b: 2, c: 3 };
const obj2 = { a: 1, b: 2, c: null };
expect(obj1).to.matchPattern(`{
"a": 1,
"b": 2,
"c": null OR 3
}`);
expect(obj2).to.matchPattern(`{
"a": 1,
"b": 2,
"c": null OR 3
}`);
});
});

包版本:

"chai-json-pattern": "^1.1.0",
"chai": "^4.2.0"

最新更新