javascript - Chai - 期望一个对象具有数组忽略顺序的深层属性
问题描述
我需要检查是否有一个以预期值payment
命名的属性:transactions
expect(payment).to.have.deep.property('transactions', [
TRANSACTION_ID_1,
TRANSACTION_ID_2,
]);
由于transactions
未指定顺序,因此测试不会一直通过。
如何在不更改测试结构的情况下解决问题?
注意:我找到了deep-equal-in-any-order
插件,但似乎没有帮助。
解决方案
遍历数组并检查它是否包含每个项目。
[TRANSACTION_ID_1, TRANSACTION_ID_2].forEach(id => {
expect(payment).to.have.deep.property('transactions').that.includes(id);
});
如果您需要检查transactions
预期 ID 的无序数组,那么还要检查长度。
expect(payment).to.have.deep.property('transactions').that.has.lengthOf(2);
当transactions
具有所有预期 id 并且具有相同长度的预期 id 时,则在正确排序时等于预期 id。
推荐阅读
- python - 执行 randomSearchCV 时传递了多个评估指标
- sql - 有没有办法在 PosgreSQL/PostGIS 中运行一个查询而不是这两个
- javascript - Webpacker 没有在生产中缩小 JS
- android - 电子邮件服务器更改 URL 时的 iOS 通用链接/Android 应用程序链接
- php - 将简码函数插入 php 行
- javascript - How to pass the value of a PHP function to a Javascript variable?
- java - 如何在 Java 中抓取我想要的 HTML 数据?
- javascript - Why readonly can be used only on array and tuple types?
- javascript - validator.js and detecting line breaks
- java - Bean method 'elasticsearchTemplate' not able to find in configuration