Mocha 和 Chai:JSON contains/includes 某些文本
Mocha and Chai: JSON contains/includes certain text
使用 Mocha 和 Chai,我正在尝试检查 JSON 数组是否包含特定文本。我尝试了该网站上建议的多项操作,但 none 有效。
await validatePropertyIncludes(JSON.parse(response.body), 'scriptPrivacy');
async validatePropertyIncludes(item, propertyValue) {
expect(item).to.contain(propertyValue);
}
我得到的错误:
AssertionError:预期 [Array(9)] 包含 'scriptPrivacy'
我的回复 API:
[
{
"scriptPrivacy": {
"settings": "settings=\"foobar\";",
"id": "foobar-notice-script",
"src": "https://foobar.com/foobar-privacy-notice-scripts.js",
}
您可以检查该字段是否为 undefined
。
如果字段存在于JSON对象中,则不会是undefined
,否则是。
使用 filter()
表达式你可以得到有多少文档没有得到 undefined
.
var filter = object.filter(item => item.scriptPrivacy != undefined).length
如果属性存在于 JSON 文件中,则变量 filter
应该 > 0。
var filter = object.filter(item => item.scriptPrivacy != undefined).length
//Comparsion you want: equal(1) , above(0) ...
expect(filter).to.equal(1)
编辑:
要从通过参数传递属性名称的方法中使用此方法,您可以使用 item[propertyName]
因为节点中对象的属性可以作为数组访问。
所以代码可以是:
//Call function
validatePropertyIncludes(object, 'scriptPrivacy')
function validatePropertyIncludes(object, propertyValue){
var filter = object.filter(item => item[propertyValue] != undefined).length
//Comparsion you want: equal(1) , above(0) ...
expect(filter).to.equal(1)
}
使用 Mocha 和 Chai,我正在尝试检查 JSON 数组是否包含特定文本。我尝试了该网站上建议的多项操作,但 none 有效。
await validatePropertyIncludes(JSON.parse(response.body), 'scriptPrivacy');
async validatePropertyIncludes(item, propertyValue) {
expect(item).to.contain(propertyValue);
}
我得到的错误: AssertionError:预期 [Array(9)] 包含 'scriptPrivacy'
我的回复 API:
[
{
"scriptPrivacy": {
"settings": "settings=\"foobar\";",
"id": "foobar-notice-script",
"src": "https://foobar.com/foobar-privacy-notice-scripts.js",
}
您可以检查该字段是否为 undefined
。
如果字段存在于JSON对象中,则不会是undefined
,否则是。
使用 filter()
表达式你可以得到有多少文档没有得到 undefined
.
var filter = object.filter(item => item.scriptPrivacy != undefined).length
如果属性存在于 JSON 文件中,则变量 filter
应该 > 0。
var filter = object.filter(item => item.scriptPrivacy != undefined).length
//Comparsion you want: equal(1) , above(0) ...
expect(filter).to.equal(1)
编辑:
要从通过参数传递属性名称的方法中使用此方法,您可以使用 item[propertyName]
因为节点中对象的属性可以作为数组访问。
所以代码可以是:
//Call function
validatePropertyIncludes(object, 'scriptPrivacy')
function validatePropertyIncludes(object, propertyValue){
var filter = object.filter(item => item[propertyValue] != undefined).length
//Comparsion you want: equal(1) , above(0) ...
expect(filter).to.equal(1)
}