toBe()
karşı toEqual()
: toEqual()
denkliği kontrol eder. toBe()
diğer yandan, aynı nesne olduklarından emin olur.
toBe()
Değerleri karşılaştırırken ve toEqual()
nesneleri karşılaştırırken kullan diyebilirim .
Zaman ilkel türde karşılaştırılması toEqual()
ve toBe()
aynı sonucu verecektir. Nesneleri toBe()
karşılaştırırken, daha katı bir karşılaştırmadır ve bellekteki tam olarak aynı nesne değilse bu false değerini döndürür. Bu nedenle, bellekteki tam olarak aynı nesne olduğundan emin olmak istemiyorsanız, toEqual()
nesneleri karşılaştırmak için kullanın .
Daha fazla bilgi için bu bağlantıya göz atın: http://evanhahn.com/how-do-i-jasmine/
Şimdi, sayılar arasındaki toBe()
ve toEqual()
sayıları arasındaki farka baktığınızda, karşılaştırmanız doğru olduğu sürece herhangi bir fark olmamalıdır. 5
her zaman eşdeğer olacaktır 5
.
Farklı sonuçlar görmek için bununla oynamak için güzel bir yer burada
Güncelleme
Bakmanın kolay bir yolu toBe()
ve toEqual()
JavaScript'te tam olarak ne yaptıklarını anlamaktır. Jasmine API'ye göre, burada bulundu :
toEqual () basit değişmez değerler ve değişkenler için çalışır ve nesneler için çalışmalıdır
toBe () ile karşılaştırır ===
Aslında söyleyen toEqual()
ve toBe()
benzer Javascripts ===
operatörü dışında toBe()
ne de aynı örnek olduğundan emin olmak için kontrol ediyor, aşağıdaki örnekte objectOne === objectTwo //returns false
de. Ancak, toEqual()
bu durumda doğru dönecektir.
Şimdi, en azından neden verildiğinde anlayabilirsiniz:
var objectOne = {
propertyOne: str,
propertyTwo: num
}
var objectTwo = {
propertyOne: str,
propertyTwo: num
}
expect(objectOne).toBe(objectTwo); //returns false
Bunun nedeni, farklı ama benzer bir sorunun cevabında belirtildiği gibi , ===
operatörün aslında her iki işlenenin de aynı nesneye başvurduğu veya değer türlerinde aynı değere sahip olduğu anlamına gelir.
toEqual()
anahtar / değer içeriğine göre karşılaştırır;toBe()
nesne referansı ile karşılaştırır.