Czy w jasmine.js istnieje sposób sprawdzenia, czy dwie tablice są równe, na przykład:
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Żadne z nich nie działa.
javascript
jasmine
użytkownik2032804
źródło
źródło
toBeCloseTo(expected,2)
ale wydaje się, że nie działa.Możesz porównać tablicę jak poniżej, jeśli tablica ma jakieś wartości
Ale jeśli tablica zwrócona przez jakąś funkcję ma więcej niż 1 element, a wszystkie są zerowe, to sprawdź za pomocą
źródło
tylko dla rekordu, zawsze możesz porównać używając 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]));
To wszystko metr smaku, będzie to również działać w przypadku złożonych obiektów dosłownych
źródło
Miałem podobny problem, gdy jedna z tablic została zmodyfikowana. Używałem go
$httpBackend
, a zwrócony z niego obiekt był w rzeczywistości$promise
obiektem zawierającym tablicę (a nieArray
obiektem).Możesz utworzyć dopasowujący jaśmin pasujący do tablicy, tworząc
toBeArray
funkcję:A potem po prostu użyj go w swoich testach, tak jak innych dopasowujących jaśmin:
źródło
x=[1,2]
,y=[1,2,3]
ponieważ sprawdza tylko pierwszex.length
elementy. Możesz to naprawić, sprawdzającif (x.length !== y.length) { return false; }
wcześniej.for (var i; ...)
=>x[undefined]
,var arraysAreSame = function ... var arraysAreSame = true
:(expect([1]).toBeArray([2])
. A także każda inna tablica naprawdę, ponieważundefined + 1 => NaN