Existe-t-il un moyen dans jasmine.js de vérifier si deux tableaux sont égaux, par exemple:
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Aucun ne semble fonctionner.
javascript
jasmine
user2032804
la source
la source
toBeCloseTo(expected,2)
mais cela ne semble pas fonctionner.Vous pouvez comparer un tableau comme celui mentionné ci-dessous si le tableau a des valeurs
Mais si le tableau renvoyé par une fonction a plus de 1 éléments et que tous sont nuls, vérifiez en utilisant
la source
juste pour l'enregistrement, vous pouvez toujours comparer en utilisant JSON.stringify
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]));
C'est tout mètre de goût, cela fonctionnera également pour les objets littéraux complexes
la source
J'ai eu un problème similaire où l'un des tableaux a été modifié. Je l'utilisais pour
$httpBackend
, et l'objet renvoyé de celui-ci était en fait un$promise
objet contenant le tableau (pas unArray
objet).Vous pouvez créer un matcher de jasmin pour correspondre au tableau en créant une
toBeArray
fonction:Et puis il suffit de l'utiliser dans vos tests comme les autres matchers au jasmin:
la source
x=[1,2]
,y=[1,2,3]
car elle ne vérifie que les premiersx.length
éléments. Vous pouvez résoudre ce problème en vérifiantif (x.length !== y.length) { return false; }
au préalable.for (var i; ...)
=>x[undefined]
,var arraysAreSame = function ... var arraysAreSame = true
:(expect([1]).toBeArray([2])
. Et aussi tout autre tableau vraiment, carundefined + 1 => NaN