我有这个对象
obj1 = {
a: 1,
b: 2,
c: 3 // or null,
}
obj2 = {
a: 1,
b: 2,
c: null // or 3
}
如何在这些对象上断言深度相等?
expect(obj1).to.deep.eql(obj2);
我知道上面的方法不是我想要的。
我需要一个或条件来考虑null
或number
部分。
我可以这样做:
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"