2016-07-06 91 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執行深層比較。