Jawaban:
Seperti yang diharapkan , .equal
akan membandingkan objek daripada data mereka, dan dalam kasus Anda itu adalah dua array yang berbeda.
Gunakan .eql
untuk membandingkan nilai-nilai secara mendalam. Lihat tautan ini .
Atau Anda dapat menggunakan .deep.equal
untuk mensimulasikan sama dengan .eql
.
Atau dalam kasus Anda, Anda mungkin ingin memeriksa .members
.
Untuk menegaskan, Anda dapat menggunakan .deepEqual
, tautan .
to.deep.equal(['a','b'])
sepertinya tidak berfungsi. Namun to.have.all.members(['a','b'])
demikian. sangat rumit ...
Cobalah untuk menggunakan Equal dalam. Ini akan membandingkan array bersarang serta bersarang Json.
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
Silakan merujuk ke situs dokumentasi utama .
expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
Ini adalah cara menggunakan chai untuk menguji secara mendalam array asosiatif.
Aku punya masalah mencoba untuk menegaskan bahwa dua asosiatif array yang sama. Saya tahu bahwa ini seharusnya tidak benar-benar digunakan dalam javascript tapi saya menulis tes unit di sekitar kode lama yang mengembalikan referensi ke array asosiatif. :-)
Saya melakukannya dengan mendefinisikan variabel sebagai objek (bukan array) sebelum pemanggilan fungsi saya:
var myAssocArray = {}; // not []
var expectedAssocArray = {}; // not []
expectedAssocArray['myKey'] = 'something';
expectedAssocArray['differentKey'] = 'something else';
// legacy function which returns associate array reference
myFunction(myAssocArray);
assert.deepEqual(myAssocArray, expectedAssocArray,'compare two associative arrays');
.deepEqual()
( chaijs.com/api/assert ).