我试图验证像这样的对象数组:
result_df.to_csv("s3n://id:pw@bucket_name/")
包含至少一个同时包含angular.element(element).bind('click',function(){
here get the element ...
})
和[
{
a: 1,
b: 2,
c: 3
},
{
a: 4,
b: 5,
c: 6
},
...
]
的对象:
我以为我可以使用chai-things执行此操作,但我不知道该对象的所有属性都可以使用
{ a: 1 }
和{ c: 3 }
不适用于多个属性:/
测试此类内容的最佳方法是什么?
答案 0 :(得分:8)
我能想到的最优雅的解决方案(在lodash的帮助下):
期望(_。some(array,{'a':1,'c':3}))。to.be.true;
答案 1 :(得分:1)
理想的解决方案似乎是:
expect(array).to.include.something.that.includes({a: 1, c: 3});
即。 array
包含一个包含这些属性的项目。不幸的是,目前似乎not be supported by chai-things。在可预见的未来。
经过多次尝试后,我发现转换原始数组可以使任务更容易。这应该没有额外的库:
// 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
}]);
答案 2 :(得分:1)
似乎来自changeto () {
cd -- ~/repos/"$1"
}
$ changeto certaindestination
$ pwd
/home/alex/repos/certaindestination
的{{1}}插件似乎已经成功了。这是我工作的东西:
chai-subset
答案 3 :(得分:0)
您可以编写自己的函数来测试数组。在此示例中,您传入数组和包含相关键/值对的对象:
function deepContains(arr, search) {
// first grab the keys from the search object
// we'll use the length later to check to see if we can
// break out of the loop
var searchKeys = Object.keys(search);
// loop over the array, setting our check variable to 0
for (var check = 0, i = 0; i < arr.length; i++) {
var el = arr[i], keys = Object.keys(el);
// loop over each array object's keys
for (var ii = 0; ii < keys.length; ii++) {
var key = keys[ii];
// if there is a corresponding key/value pair in the
// search object increment the check variable
if (search[key] && search[key] === el[key]) check++;
}
// if we have found an object that contains a match
// for the search object return from the function, otherwise
// iterate again
if (check === searchKeys.length) return true;
}
return false;
}
deepContains(data, { a: 4, c: 6 }); // true
deepContains(data, { a: 1, c: 6 }); // false
答案 4 :(得分:0)
我能想到的最简单的方法是:
const chai = require('chai');
const expect = chai.expect;
chai.use(require('chai-like'));
chai.use(require('chai-things'));
expect([
{
a: 1,
b: 2,
c: 3,
},
{
a: 4,
b: 5,
c: 6,
},
]).to.be.an('array').that.contains.something.like({ a: 1, c: 3 });