Я використовую Mocha для тестування невеликого модуля в моєму додатку Express.js. У цьому модулі одна з моїх функцій повертає масив. Я хочу перевірити, чи правильний масив для даного вводу. Я роблю так:
suite('getWords', function(){
test("getWords should return list of numbers", function() {
var result = ['555', '867', '5309'];
assert.equal(result, getWords('555-867-5309'));
});
});
Коли це запускається, я отримую таку помилку твердження:
AssertionError: ["555","867","5309"] == ["555","867","5309"]
Однак, коли я міняю свій тест на an assert.deepEqual
, тест проходить нормально. Мені було цікаво, чи це був випадок ==
проти ===
, але якщо я вступлю
[1,2,3] === [1,2,3]
у командний рядок node.js, я все одно отримую значення false.
Чому масиви не порівнюють так, як інші значення (наприклад 1 == 1
)? і в чому різниця між assert.equal та assert.deepEqual?
deepEqual()
; насправді не те, про що ви думаєте в порівнянні, поки насправді не натрапите на це.