Gibt es in jasmine.js eine Möglichkeit zu überprüfen, ob zwei Arrays gleich sind, zum Beispiel:
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Beides scheint nicht zu funktionieren.
javascript
jasmine
user2032804
quelle
quelle
toBeCloseTo(expected,2)
aber es scheint nicht zu funktionieren.Sie können ein Array wie das unten erwähnte vergleichen, wenn das Array einige Werte hat
Wenn das von einer Funktion zurückgegebene Array jedoch mehr als 1 Elemente enthält und alle Null sind, überprüfen Sie dies mithilfe von
quelle
Nur für den Datensatz können Sie immer mit JSON.stringify vergleichen
const arr = [1,2,3]; expect(JSON.stringify(arr)).toBe(JSON.stringify([1,2,3])); expect(JSON.stringify(arr)).toEqual(JSON.stringify([1,2,3]));
Es ist alles Meter Geschmack, dies funktioniert auch für komplexe wörtliche Objekte
quelle
Ich hatte ein ähnliches Problem, bei dem eines der Arrays geändert wurde. Ich habe es für verwendet
$httpBackend
, und das zurückgegebene Objekt davon war tatsächlich ein$promise
Objekt, das das Array enthielt (keinArray
Objekt).Sie können einen Jasmin-Matcher erstellen, der dem Array entspricht, indem Sie eine
toBeArray
Funktion erstellen :Und dann verwenden Sie es einfach in Ihren Tests wie die anderen Jasmin-Matcher:
quelle
x=[1,2]
,y=[1,2,3]
da nur die erstenx.length
Elemente überprüft werden. Sie können dies beheben, indem Sie diesif (x.length !== y.length) { return false; }
vorher überprüfen .for (var i; ...)
=>x[undefined]
,var arraysAreSame = function ... var arraysAreSame = true
:(expect([1]).toBeArray([2])
. Und auch wirklich jedes andere Array, weilundefined + 1 => NaN