具有未知数组的柴子集
chai subset with unknown array
我有一个复杂的 JSON 对象要测试。
有没有办法让它在 chai 子集中工作,或者可以通过此测试的替代插件。
var result = {
present: 'Yes',
notPresent: 'No',
examples: ['sam','joe'],
nestedThing: {
nestedAttr: 1,
}
};
var expected = {
present: 'Yes',
nestedThing: {
nestedAttr: 1,
}
examples: [],
}
chai.expect(result).to.containSubset(expected);
我想断言 examples
是一个数组,但我不关心数组中有什么(如果有的话)项。
如果我可以断言它至少有 1 个项目,则可加分,但我认为这不太可能。
编辑
如果 expected
可以正常工作,我愿意稍微调整一下结构。例如
var expected = {
...
examples: chai.matcher.isArray(),
}
我最终选择了 chai-shallow-deep-equal,它确实支持这种行为。 (虽然没有检查数组的长度,但那是一个远景)。
此处示例:https://runkit.com/chrisjensen/subset-match-empty-array
我也created a fork 以便在匹配失败时显示差异。 更新 分叉已被接受到 chai-shallow-deep-equal
var chai = require("chai"); // chai is a peer dependency.
var chaiShallowDeepEqual = require("chai-shallow-deep-equal")
chai.use(chaiShallowDeepEqual);
var result = {
present: 'Yes',
notPresent: 'No',
examples: ['sam','joe'],
nestedThing: {
nestedAttr: 1,
}
};
var expected = {
present: 'Yes',
nestedThing: {
nestedAttr: 1,
},
examples: [],
}
chai.expect(result).to.shallowDeepEqual(expected);
我有一个复杂的 JSON 对象要测试。 有没有办法让它在 chai 子集中工作,或者可以通过此测试的替代插件。
var result = {
present: 'Yes',
notPresent: 'No',
examples: ['sam','joe'],
nestedThing: {
nestedAttr: 1,
}
};
var expected = {
present: 'Yes',
nestedThing: {
nestedAttr: 1,
}
examples: [],
}
chai.expect(result).to.containSubset(expected);
我想断言 examples
是一个数组,但我不关心数组中有什么(如果有的话)项。
如果我可以断言它至少有 1 个项目,则可加分,但我认为这不太可能。
编辑
如果 expected
可以正常工作,我愿意稍微调整一下结构。例如
var expected = {
...
examples: chai.matcher.isArray(),
}
我最终选择了 chai-shallow-deep-equal,它确实支持这种行为。 (虽然没有检查数组的长度,但那是一个远景)。
此处示例:https://runkit.com/chrisjensen/subset-match-empty-array
我也created a fork 以便在匹配失败时显示差异。 更新 分叉已被接受到 chai-shallow-deep-equal
var chai = require("chai"); // chai is a peer dependency.
var chaiShallowDeepEqual = require("chai-shallow-deep-equal")
chai.use(chaiShallowDeepEqual);
var result = {
present: 'Yes',
notPresent: 'No',
examples: ['sam','joe'],
nestedThing: {
nestedAttr: 1,
}
};
var expected = {
present: 'Yes',
nestedThing: {
nestedAttr: 1,
},
examples: [],
}
chai.expect(result).to.shallowDeepEqual(expected);