如何解决如何在对象数组中检查 Chai 中的属性
如何使用 Chai 检查对象数组中的属性。我的对象数组是这样的:
const myObj = [ {fName: 'abc',lName: 'xyz'},{fName: 'efg',lName: 'lmn'},... ]
我想检查每个对象是否必须具有属性 fName
和 lName
,而不管它们的值如何!
附言:我知道一个名为 chai-things 的库,有了它我们就可以实现这一点,但是如果我只想使用 chai 呢?
解决方法
如果您不想使用 for 循环或 chai-things 库,您可以使用 deep equal expectation 在单个断言中比较整个数组:
const expect = require('chai').expect;
const myObj = [ {fName: 'abc',lName: 'xyz'},{fName: 'efg',lName: 'lmn'} ];
describe('Test Suite',() => {
it('MyObj Test',function() {
expect(myObj).to.eql([ {fName: 'abc',lName: 'lmn'}]);
});
});
如果您更改第二个对象并运行测试,您将看到一个非常具体的错误:
AssertionError: expected [ Array(2) ] to deeply equal [ Array(2) ]
+ expected - actual
"lName": "xyz"
}
{
"fName": "efg"
- "lName": "lmn"
+ "lName": "lmn2"
}
]
或者您必须明确写出所有期望:
expect(myObj).to.be.an('array');
expect(myObj[0]).to.have.property('fName');
expect(myObj[0]).to.have.property('lName');
expect(myObj[1]).to.have.property('fName');
expect(myObj[1]).to.have.property('lName');
// and so on...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。