1
我想做一些单元测试比较数组的结果数组它应该看起来像,不幸的是结果来自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);
}
如果第一次测试失败,它将运行第二次,这也会失败,但会打印出差异。
谢谢,这并不工作,但如果测试失败,则不显示差异(如深含),有没有办法迫使该? – Mankind1023
@ Mankind1023我不认为这是可能的:( – robertklep