茉莉花阵列比较

时间:2016-07-06 10:12:37

标签: jasmine

我不明白这个输出:

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

Jasmine告诉我测试失败了,这就是问题所在。我没有看到问题。我看到两个对象数组彼此相等且彼此相等。

我有没有得到一些微妙的东西?这与期望实际上没有被识别为'对象({...})'有关吗?当我离开我的Mac没有运行npm安装时,茉莉花有什么变化吗?有人改变了宇宙的引力常数吗?

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

2 个答案:

答案 0 :(得分:1)

你的测试断言是什么?如果使用[{ name: 'Alice', typeID: 1 }, { name: 'Bob', typeID: 2 }] 它应该有效 - 尽管对象不同,.toEqual会进行深度比较。

答案 1 :(得分:-1)

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

IIRC Jasmine没有深度平等(在哪里,iirc,Mocha),但是,你可以这样做:

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