具有未知数组的柴子集

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);