【发布时间】: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 中的平等有点棘手,所以如果你不想接受那头野兽,我会坚持使用lodash 或underscore。 -
您可以编写自己的函数,也可以使用数十个可以与 Mocha 一起使用的现有断言库。或者,您可以按照前面评论中的建议使用 lodash 之类的东西,这将有助于减少编写自定义代码所需的工作。什么是最好的确实因情况而异,您在问题中描述的情况并不是特别有特色。我提到的任何选项都是先验好的。
标签: javascript arrays unit-testing ecmascript-6 mocha.js