测试对象数组的值是否等于 Chai 中另一个数组的值

Test array of objects for values equal to values from another array in Chai

我对 Chai 完全陌生,这可能真的很简单,但我在官方文档中找不到任何关于我的案例的参考。我正在尝试验证具有两个对象的数组是否具有 属性 值与另一个数组中的值完全匹配。

考虑以下因素:

test('Array includes ids', function() {
    const array1 = [
        {
            type: 'type1',
            id: '1'
        },
        {
            type: 'type2',
            id: '2'      
        },
    ]
        
    const array2 = ['1', '2']
    
    chai.expect(array1).to.have.deep.members(array2) // fails
})

我想验证 array1 中的对象是否具有 id 属性,其中一个值在 array2 中找到。我知道我可以将 array1 映射为 array1.map(p => p.id) 并将其与 array2 进行比较,但这似乎与测试实践背道而驰。毕竟,我不想对我的目标进行过多篡改,使其符合我目前的知识水平。

有没有更好的方法来测试这个? (不用说,我上面的示例代码没有按预期工作。)

只需使用 .map() 方法转换您的 array1 即可使您的数组仅包含 id,就像 array2

test('Array includes ids', function() {
    const array1 = [
        {
            type: 'type1',
            id: '1'
        },
        {
            type: 'type2',
            id: '2'      
        },
    ]
        
    const arr1 = array1.map(e=>e.id);//transform with .map() -> ['1', '2']
    const array2 = ['1', '2']
    
    chai.expect(arr1).to.have.deep.members(array2) // pass
})