Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将两个对象数组与其值进行比较,单元测试_Javascript_Arrays_Unit Testing_Ecmascript 6_Mocha.js - Fatal编程技术网

Javascript 将两个对象数组与其值进行比较,单元测试

Javascript 将两个对象数组与其值进行比较,单元测试,javascript,arrays,unit-testing,ecmascript-6,mocha.js,Javascript,Arrays,Unit Testing,Ecmascript 6,Mocha.js,假设我有两个相似的数组,如何编写unittest来检查这些数组是否具有相同的值。这些值是相等的。我使用摩卡咖啡和酶进行单元测试。比较该值的最佳方法是什么 const devices = [{ deviceType: 'Tag', deviceId: 1, name: 'Tag For Sending and alarm', version: '', location: 'Room1', lastAli

假设我有两个相似的数组,如何编写unittest来检查这些数组是否具有相同的值。这些值是相等的。我使用摩卡咖啡和酶进行单元测试。比较该值的最佳方法是什么

const devices = [{
        deviceType: 'Tag',
        deviceId: 1,
        name: 'Tag For Sending and alarm',
        version: '',
        location: 'Room1',
        lastAliveMessage: '',
        deviceStatus: 'Active',
        actions: 'offline',

    },{
        deviceType: 'Tag1',
        deviceId: 2,
        name: 'Tag For Sending and alarm2 ',
        version: '',
        location: 'Room2',
        lastAliveMessage: '',
        deviceStatus: 'Active',
        actions: 'offline',
    }]

const devices2 = [{
        deviceType: 'Tag',
        deviceId: 1,
        name: 'Tag For Sending and alarm',
        version: '',
        location: 'Room1',
        lastAliveMessage: '',
        deviceStatus: 'Active',
        actions: 'offline',

    },{
        deviceType: 'Tag1',
        deviceId: 2,
        name: 'Tag For Sending and alarm2 ',
        version: '',
        location: 'Room2',
        lastAliveMessage: '',
        deviceStatus: 'Active',
        actions: 'offline',
    }]

 data.forEach(item => {
                devices.forEach(device =>{
item.deviceId.should.be.equal(device.deviceId))
                })
            })
如果正在使用,则可以使用
deep.equal
检查对象的数组是否相同。即使对象中的关键点顺序在两个关键点之间不相同,它也会起作用

expect(devices).to.deep.equal(devices2)

我会使用库中的
isEqual
函数。平等性在javascript中有点棘手,所以如果你不想与我的野兽较量,我会坚持或。你可以编写自己的函数,也可以使用几十个已经存在的断言库,可以与Mocha一起使用。或者,正如前面的评论中所建议的,您可以使用lodash之类的东西,这将有助于减少编写自定义代码所需的工作量。在不同的情况下,什么才是最好的,而你在问题中描述的情况并不是特别独特。我提到的任何选择都是先天的好。
expect(devices).to.deep.equal(devices2)