Apakah ada cara di jasmine.js untuk memeriksa apakah dua array sama, misalnya:
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Sepertinya tidak ada yang berhasil.
javascript
jasmine
pengguna2032804
sumber
sumber
toBeCloseTo(expected,2)
tetapi sepertinya tidak berhasil.Anda dapat membandingkan array seperti yang disebutkan di bawah ini jika array memiliki beberapa nilai
Tetapi jika array yang dikembalikan dari beberapa fungsi memiliki lebih dari 1 elemen dan semuanya nol maka verifikasi dengan menggunakan
sumber
hanya untuk catatan Anda selalu dapat membandingkan menggunakan 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]));
Semua selerasa, ini juga akan berfungsi untuk objek literal yang kompleks
sumber
Saya punya masalah serupa di mana salah satu array dimodifikasi. Saya menggunakannya untuk
$httpBackend
, dan objek yang dikembalikan dari itu sebenarnya adalah$promise
objek yang berisi array (bukanArray
objek).Anda dapat membuat pencocokan melati untuk mencocokkan array dengan membuat
toBeArray
fungsi:Dan kemudian gunakan saja dalam tes Anda seperti pencocokan melati lainnya:
sumber
x=[1,2]
,y=[1,2,3]
karena hanya memeriksax.length
elemen pertama . Anda dapat memperbaikinya dengan memeriksaif (x.length !== y.length) { return false; }
sebelumnya.for (var i; ...)
=>x[undefined]
,var arraysAreSame = function ... var arraysAreSame = true
:(expect([1]).toBeArray([2])
. Dan juga array lainnya, karenaundefined + 1 => NaN