2016-07-06 89 views
0

我不明白这样的输出:茉莉花阵列比较

Expected [ ({ label: 'label1', value: 'value1' }), ({ label: 'label2', value: 'value2' }), ({ label: 'label3', value: 'value3' }) ] to equal [ Object({ label: 'label1', value: 'value1' }), Object({ label: 'label2', value: 'value2' }), Object({ label: 'label3', value: 'value3' }) ] 

茉莉告诉我,试验失败,这就是问题所在。我没有看到问题。我看到两个对象阵列应该彼此相等和彼此相等。

有没有一些微妙的我没有得到?这是否与实际上没有被确定为'Object({...})'的期望有关?茉莉花有什么改变,而我离开我的Mac没有运行npm install?有人改变宇宙的引力常数吗?

明信片上的答案。或者在这里会更好。

+1

你能显示你的测试代码吗? – Lee

回答

-1

Jasmine正在对象级进行比较,而不是在对象属性级进行比较。

IIRC茉莉没有深相等(其中,IIRC,摩卡一样),但是,你可以这样做:

result.forEach(function(item) { 
    var item = expectedResults.filter(function(e) { 
    return e.label === item.label && e.value === item.value; 
    }) 
    expect(item).not.toBeNull(); 
}); 
+0

你也可以为Jasmine编写一个匹配器来进行深层次的比较。它会使你的测试更加清晰,这可能是正确的。 – daf

+1

Jasmine toEqual使用下划线toEqual,这是一个深入的比较。 https://github.com/jasmine/jasmine/blob/master/lib/jasmine-core/jasmine.js#L2833 – Lee

0

什么是你的测试断言?如果使用.toEqual它应该工作 - 虽然对象不同,.toEqual执行深层比较。