Ich verwende Mocha, um ein kleines Modul in meiner Express.js-Anwendung zu testen. In diesem Modul gibt eine meiner Funktionen ein Array zurück. Ich möchte testen, ob das Array für eine bestimmte Eingabe korrekt ist oder nicht. Ich mache das so:
suite('getWords', function(){
test("getWords should return list of numbers", function() {
var result = ['555', '867', '5309'];
assert.equal(result, getWords('555-867-5309'));
});
});
Wenn dies ausgeführt wird, wird der folgende Bestätigungsfehler angezeigt:
AssertionError: ["555","867","5309"] == ["555","867","5309"]
Wenn ich jedoch meinen Test in einen ändere assert.deepEqual
, besteht der Test einwandfrei. Ich habe mich gefragt, ob es ein Fall von ==
vs ist ===
, aber ob ich eintrete
[1,2,3] === [1,2,3]
In der Befehlszeile von node.js erhalte ich immer noch false.
Warum vergleichen Arrays nicht wie andere Werte (z. B. 1 == 1
)? und was ist der Unterschied zwischen assert.equal und assert.deepEqual?
deepEqual()
; Nicht wirklich etwas, woran Sie im Vergleich denken, bis Sie tatsächlich darauf stoßen.