【问题标题】:Compare two array of object to its value, unit test比较两个对象数组与其值,单元测试
【发布时间】:2017-09-18 14:49:35
【问题描述】:

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

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))
                })
            })

【问题讨论】:

  • 我会使用来自lodash 库的isEqual 函数。 javascript 中的平等有点棘手,所以如果你不想接受那头野兽,我会坚持使用lodashunderscore
  • 您可以编写自己的函数,也可以使用数十个可以与 Mocha 一起使用的现有断言库。或者,您可以按照前面评论中的建议使用 lodash 之类的东西,这将有助于减少编写自定义代码所需的工作。什么是最好的确实因情况而异,您在问题中描述的情况并不是特别有特色。我提到的任何选项都是先验好的。

标签: javascript arrays unit-testing ecmascript-6 mocha.js


【解决方案1】:

如果您使用Chai,您可以使用deep.equal 检查对象的数组是否相同。即使对象中键的顺序在两者之间不同,它也可以工作。

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

【讨论】:

    【解决方案2】:
    devices.forEach((device, index) => {  
         data[index].deviceType.props.children.should.be.equal(device.deviceType)
         data[index].deviceId.props.children.should.be.equal(device.deviceId)
            })
    

    【讨论】:

    • 如果两个数组的顺序不同,上面的解决方案是否仍然有效
    猜你喜欢
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多