首页 > 解决方案 > 使用 Mocha/Chai 测试对象数组是否包含某个键

问题描述

我正在尝试在一组对象上使用 Mocha 和 Chai 编写一些测试。我想通过这个数组并返回任何包含error密钥的对象。我认为这种事情会很容易,但我遇到了困难。

 [ 
   { fileName: 'font1.ttc', error: 'font_type_not_supported' },
   { fileName: 'font2.ttf', error: 'parse_failed' },
   { fileName: 'font3.tff' } 
 ]

我已经尝试过类似的东西。 expect(testResult).to.have.nested.property('error');

我可能错过了一些简单的东西,有人有什么建议吗?

标签: testingmocha.jschai

解决方案


我认为您可以使用节点功能filter来完成您的工作。

像这样的工作:

var array = [
    { fileName: 'font1.ttc', error: 'font_type_not_supported' },
    { fileName: 'font2.ttf', error: 'parse_failed' },
    { fileName: 'font3.tff' }
]
var filter = array.filter(item => item.error != undefined)

通过这种方式,您可以获得存在该属性的元素。

但是如果你想比较有多少元素有这个属性,你可以使用length属性。

var count = array.filter(item => item.error != undefined).length
expect(count).gt(0)

如果count变量大于 0,则意味着至少一个对象具有该属性。


推荐阅读