我正在尝试进行一些单元测试,将结果数组与它应该看起来的数组进行比较,不幸的是,结果来自具有延迟的api,因此对象的顺序并不总是相同的,这导致测试失败:
简化示例
var a = [
{name: 'Joe', age: 35},
{name: 'Steve', age: 30},
]
//assume we got the result in this order
var b = [
{name: 'Steve', age: 30},
{name: 'Joe', age: 35},
]
expect(a).to.deep.equal(b) //Fails
我目前的解决方法是:
expect(a.length).to.equal(b.length);
for(let item of b){
expect(a).to.deep.contain(item);
}
但是我正在寻找一种直接进行深度比较的方法而不考虑Mocha / Chai中的顺序,是否可能?
更新 这有点像黑客,但它可能会有所帮助,如果有人需要它,你可以把整个东西放在try / catch和错误使用深度包含:
try{
expect(a).to.have.deep.members(b);
}catch(e){
expect(a).to.deep.equal(b);
}
如果第一次测试失败,它会运行第二次测试但也会失败,但会打印出差异。
答案 0 :(得分:0)