Я использую 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"]
Однако, когда я меняю свой тест на assert.deepEqual
, тест проходит нормально. Мне было интересно, был ли это случай ==
vs ===
, но если я войду
[1,2,3] === [1,2,3]
в командную строку node.js, я все равно получаю false.
Почему массивы не сравниваются, как другие значения (например 1 == 1
)? и в чем разница между assert.equal и assert.deepEqual?
deepEqual()
; на самом деле это не то, о чем вы думаете при сравнении, пока вы действительно не столкнетесь с этим.