javascript - 是否有任何 Jest 匹配器可以比较 Array<Objects>?

标签 javascript node.js jestjs

我正在尝试测试两个对象数组是否完全相等,尝试使用 toEqual 匹配器,但似乎它只适用于字符串数组,Jest 中是否有可用的匹配器来满足条件。请不要将此标记为重复,我没有找到明确的答案。

const arr1 = [{name: 'sam', degree: 'engineer', age: '23'}, {name: 'jane', degree: 'accounts', age: '25'}]
const arr2 = [{name: 'jane', degree: 'accounts', age: '25'},{name: 'sam', degree: 'engineer', age: '23'}]

expect(arr1).toEqual(arr2)  // should pass the testcase

最佳答案

您可以将其解析为一系列期望。

expect(arr1).toBeArray();
expect(arr2).toBeArray();
expect(arr1).toBeArrayOfSize(arr2.length);
expect(arr2).toBeArrayOfSize(arr1.length);

接下来循环每个数组并检查第二个数组是否包含其元素

arr1.forEach(item => {
   expect(arr2).toContain(item);
});

arr2.forEach(item => {
   expect(arr1).toContain(item);
});

关于javascript - 是否有任何 Jest 匹配器可以比较 Array<Objects>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64617992/

相关文章:

javascript - 如果正文没有类,则更改标题上的边距

javascript - 为什么需要将立即调用的函数表达式 IIFE 包装在括号 JavaScript 中

javascript - 使用按钮来选择随机 radio ?

javascript - WebSocket 连接失败:连接建立时出错:net::ERR_CONNECTION_REFUSED

visual-studio-code - vscode 开 Jest 扩展不能正常工作

javascript - 如何使用嵌套组件对组件进行快照测试?

javascript - 日期时间 checkin 权限 Hyperledger Fabric

javascript - 根据对象数组中的第一个 "row"重命名 JSON 键

node.js - 从中间件访问环回配置数据

javascript - Jest 报道不算在报道中抛出错误