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