J'utilise Mocha pour tester un petit module dans mon application Express.js. Dans ce module, une de mes fonctions renvoie un tableau. Je veux tester si le tableau est correct ou non pour une entrée donnée. Je le fais comme ceci:
suite('getWords', function(){
test("getWords should return list of numbers", function() {
var result = ['555', '867', '5309'];
assert.equal(result, getWords('555-867-5309'));
});
});
Lorsque cela s'exécute, j'obtiens l'erreur d'assertion suivante:
AssertionError: ["555","867","5309"] == ["555","867","5309"]
Cependant, lorsque je change mon test en un assert.deepEqual
, le test réussit bien. Je me demandais si c'était un cas de ==
vs ===
, mais si j'entre
[1,2,3] === [1,2,3]
dans la ligne de commande node.js, j'obtiens toujours false.
Pourquoi les tableaux ne comparent-ils pas la façon dont les autres valeurs le font (par exemple 1 == 1
)? et quelle est la différence entre assert.equal et assert.deepEqual?
la source
deepEqual()
; pas vraiment quelque chose auquel vous pensez dans la comparaison jusqu'à ce que vous le rencontriez réellement.