Estou usando o Mocha para testar um pequeno módulo em meu aplicativo Express.js. Neste módulo, uma das minhas funções retorna um array. Quero testar se a matriz está correta ou não para uma determinada entrada. Estou fazendo assim:
suite('getWords', function(){
test("getWords should return list of numbers", function() {
var result = ['555', '867', '5309'];
assert.equal(result, getWords('555-867-5309'));
});
});
Quando isso é executado, recebo o seguinte erro de declaração:
AssertionError: ["555","867","5309"] == ["555","867","5309"]
No entanto, quando eu mudo meu teste para um assert.deepEqual
, ele passa bem. Eu queria saber se era um caso de ==
vs ===
, mas se eu entrar
[1,2,3] === [1,2,3]
na linha de comando node.js, ainda consigo falso.
Por que os arrays não comparam a maneira como outros valores o fazem (por exemplo 1 == 1
)? e qual é a diferença entre assert.equal e assert.deepEqual?
deepEqual()
; não é realmente algo em que você pensa na comparação até que realmente encontre.