我正在尝试验证像这样的对象数组:
[
{
a: 1,
b: 2,
c: 3
},
{
a: 4,
b: 5,
c: 6
},
...
]
至少包含一个同时具有{ a: 1 } 和{ c: 3 } 的对象:
我想我可以用 chai-things 做到这一点, 但我不知道对象的所有属性都可以使用
expect(array).to.include.something.that.deep.equals({ ??, a: 1, c: 3});
和 contain.a.thing.with.property 不适用于多个属性:/
测试此类内容的最佳方法是什么?
最佳答案
所需的解决方案似乎是这样的:
expect(array).to.include.something.that.includes({a: 1, c: 3});
即array 包含一个包含这些属性的项目。不幸的是,它似乎not be supported by chai-things在这一刻。在可预见的 future 。
经过多次不同的尝试,我发现转换原始数组可以使任务更容易。这应该在没有额外库的情况下工作:
// Get items that interest us/remove items that don't.
const simplifiedArray = array.map(x => ({a: x.a, c: x.c}));
// Now we can do a simple comparison.
expect(simplifiedArray).to.deep.include({a: 1, c: 3});
这还允许您同时检查多个对象(我的用例)。
expect(simplifiedArray).to.include.deep.members([{
a: 1,
c: 3
}, {
a: 3,
c: 5
}]);
关于javascript - Chai 期待 : an array to contain an object with at least these properties and values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34398951/