chai test dizisi eşitliği beklendiği gibi çalışmıyor


235

Aşağıdakiler neden başarısız oluyor?

expect([0,0]).to.equal([0,0]);

ve bunu test etmenin doğru yolu nedir?

Yanıtlar:


360

İçin beklemek , .equalyerine kendi verilerine göre nesneleri karşılaştırabilir ve sizin durumunuzda iki farklı diziler olduğunu edecektir.

.eqlDeğerleri derinlemesine karşılaştırmak için kullanın . Bu bağlantıya göz atın .
Ya da .deep.equalaynı simüle etmek için kullanabilirsiniz .eql.
Veya sizin durumunuzda kontrol etmek isteyebilirsiniz .members .

For iddia kullanabilirsiniz .deepEqual, bağlantıyı .


2
FTR, derin eşit sözdizimi olarak değiştirildi: .deepEqual()( chaijs.com/api/assert ).
Ludder

7
Değişmez , Asserts işlevselliğine bakıyorsunuz , ancak Starter'ın hangi konuyla ilgili olduğu Bekleniyor / Olmalı .
moka

5
Haklısın, iyi okumadım. Bunun başka bir API değişikliği olduğunu düşündüm.
Ludder

6
to.deep.equal(['a','b'])çalışmıyor gibi görünüyor. ancak to.have.all.members(['a','b']). çok hantal ...
jacob

chaijs.com/plugins/deep-equal-in-any-order , nesne özelliklerinin sırası öngörülemediğinde iyi çalıştı.
asokan

60

Derin Eşitliği kullanmaya çalışın. İç içe dizileri ve iç içe Json'u karşılaştıracaktır.

expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });

Lütfen ana dokümantasyon sitesine bakınız .


7
Bu aynı zamanda diziler için de geçerlidir:expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
alxndr

-1

İlişkilendirilebilir dizileri derinlemesine test etmek için chai bu şekilde kullanılır.

İki ilişkisel dizinin eşit olduğunu iddia etmeye çalışırken bir sorunum vardı . Bu gerçekten javascript kullanılmaması gerektiğini biliyorum ama bir ilişkili diziye bir başvuru döndürür eski kod etrafında birim testleri yazıyordum. :-)

Benim işlev çağrısından önce bir değişken (dizi değil) olarak değişken tanımlayarak yaptım:

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');
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.