Sto usando Mocha per testare un piccolo modulo nella mia applicazione Express.js. In questo modulo, una delle mie funzioni restituisce un array. Voglio verificare se l'array è corretto o meno per un dato input. Lo sto facendo in questo modo:
suite('getWords', function(){
test("getWords should return list of numbers", function() {
var result = ['555', '867', '5309'];
assert.equal(result, getWords('555-867-5309'));
});
});
Quando viene eseguito, ottengo il seguente errore di asserzione:
AssertionError: ["555","867","5309"] == ["555","867","5309"]
Tuttavia, quando cambio il mio test in un assert.deepEqual
, il test viene superato correttamente. Mi chiedevo se fosse un caso di ==
vs ===
, ma se entro
[1,2,3] === [1,2,3]
nella riga di comando node.js, ottengo ancora false.
Perché gli array non si confrontano come fanno gli altri valori (ad es. 1 == 1
)? e qual è la differenza tra assert.equal e assert.deepEqual?
deepEqual()
; non proprio qualcosa a cui pensi nel confronto fino a quando non lo incontri davvero.