【问题标题】:Chai assertion for checking certain fields in an object array用于检查对象数组中某些字段的 Chai 断言
【发布时间】:2018-01-25 03:45:01
【问题描述】:

我有一个如下所示的对象数组,并且希望只针对数组中的某些字段进行断言。

对象数组 -

var a = [{"key":"key2","value":"value2","updatedBy":"name1","Dttm":1516849776062},{"key":"key1","value":"value1","updatedBy":"name2","Dttm":1516849776060}]]

我只需要针对 key 和 value 字段进行断言,而不用担心 updatedBy 和 Dttm,比如,

expect(a)........([{"key":"key1","value":"value1"},{"key":"key2","value":"value2"}])

【问题讨论】:

标签: javascript unit-testing mocha.js chai


【解决方案1】:

您可以使用 2 个chai 插件的组合:chai-things 和 chai-like。

Chai Things:

Chai Things 为 Chai 添加了对数组元素断言的支持。

Chai Like:

chai 的 JSON 匹配器。这在您测试 API 并希望忽略一些属性(例如:updatedAt、createdAt、id)时非常有用。

你可以编写这样的测试,例如:

//...
expect(a).to.contain.something.like({"key":"key1", "value":"value1"})
expect(a).to.contain.something.like({"key":"key2", "value":"value2"})

以下是两者的安装方法:

npm install --save-dev chai-things chai-like

安装后告诉chai使用新插件:

const chai = require('chai')

chai.use(require('chai-like'))
chai.use(require('chai-things'))

进一步阅读和示例的链接:

柴东西:http://chaijs.com/plugins/chai-things/

柴样:http://chaijs.com/plugins/chai-like/

【讨论】:

  • 我在使用上述内容时不断收到断言错误,我在测试规范中需要 chai,然后对所有其他断言使用 chai.expect,使用此设置我不确定我能做到什么使用上述 2 来断言对象数组而不影响其他断言
  • 您遇到什么错误?您是否正确添加了 chai 插件?这应该对其他断言没有影响..或者我不明白你的意思。
  • 所以,这是我安装插件和使用的方式,我做了 npm install --save-dev 所以它被添加到我的开发依赖项中,然后在规范文件中我有类似 const chai = 要求('柴'); chai.use(require('chai-things'));chai.use(require('chai-like'));如果我的规范文件顶部有 chai.use,那么我会收到此错误“Uncaught AssertionError: expected { Object (type, code, ...) } to have property 'length'”, “at Proxy.allMethod ( node_modules/chai-things/lib/chai-things.js:171:37)"
  • 它在一个看起来像这样的断言中出错,“expect(res.body.msg).to.be.an('array').to.have.lengthOf(1);”
  • 嗯..不确定这是否与原始问题有关。但是试试这个:expect(res.body.msg).to.be.an('array').and.have.lengthOf(1)(并确保 res.body.msg 确实是一个数组)
猜你喜欢
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多