Разница между assert.equal и assert.deepEqual в тестировании Javascript с помощью Mocha?

Я использую 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Тест проходит нормально. Мне было интересно, если это был случай== против===, но если я войду

[1,2,3] === [1,2,3]

в командной строке node.js я все еще получаю false.

Почему массивы не сравниваются так, как другие значения (например,1 == 1)? и в чем разница между assert.equal и assert.deepEqual?

Ответы на вопрос(1)

Ваш ответ на вопрос