Używam Mocha do testowania małego modułu w mojej aplikacji Express.js. W tym module jedna z moich funkcji zwraca tablicę. Chcę sprawdzić, czy tablica jest poprawna dla danego wejścia. Robię to w ten sposób:
suite('getWords', function(){
test("getWords should return list of numbers", function() {
var result = ['555', '867', '5309'];
assert.equal(result, getWords('555-867-5309'));
});
});
Po uruchomieniu pojawia się następujący błąd potwierdzenia:
AssertionError: ["555","867","5309"] == ["555","867","5309"]
Jednak kiedy zmieniam mój test na an assert.deepEqual
, test kończy się pomyślnie. Zastanawiałem się, czy to przypadek ==
vs ===
, ale jeśli wejdę
[1,2,3] === [1,2,3]
do wiersza poleceń node.js, nadal otrzymuję fałsz.
Dlaczego tablice nie porównują tak, jak inne wartości (np. 1 == 1
)? i jaka jest różnica między assert.equal i assert.deepEqual?
deepEqual()
; nie jest to coś, o czym myślisz w porównaniu, dopóki nie natrafisz na to.