toBe()
versus toEqual()
: toEqual()
memeriksa kesetaraan. toBe()
, di sisi lain, memastikan bahwa mereka adalah objek yang sama persis.
Saya akan mengatakan penggunaan toBe()
saat membandingkan nilai, dan toEqual()
ketika membandingkan objek.
Saat membandingkan tipe primitif, toEqual()
dan toBe()
akan menghasilkan hasil yang sama. Ketika membandingkan objek, toBe()
adalah perbandingan yang lebih ketat, dan jika bukan objek yang sama persis dalam memori ini akan menghasilkan false. Jadi, kecuali Anda ingin memastikan itu adalah objek yang sama persis dalam memori, gunakan toEqual()
untuk membandingkan objek.
Lihat tautan ini untuk info lebih lanjut: http://evanhahn.com/how-do-i-jasmine/
Sekarang ketika melihat perbedaan antara toBe()
dan toEqual()
ketika datang ke angka, seharusnya tidak ada perbedaan selama perbandingan Anda benar. 5
akan selalu setara dengan 5
.
Tempat yang bagus untuk bermain-main dengan ini untuk melihat hasil yang berbeda ada di sini
Memperbarui
Cara mudah untuk melihat toBe()
dan toEqual()
memahami apa yang sebenarnya mereka lakukan dalam JavaScript. Menurut Jasmine API, ditemukan di sini :
toEqual () berfungsi untuk literal dan variabel sederhana, dan harus berfungsi untuk objek
toBe () dibandingkan dengan ===
Pada dasarnya apa yang dikatakan adalah toEqual()
dan toBe()
merupakan ===
operator Javascripts yang serupa kecuali toBe()
juga memeriksa untuk memastikan itu adalah objek yang sama persis, dalam contoh di bawah ini objectOne === objectTwo //returns false
juga. Namun, toEqual()
akan kembali benar dalam situasi itu.
Sekarang, Anda setidaknya bisa mengerti mengapa ketika diberikan:
var objectOne = {
propertyOne: str,
propertyTwo: num
}
var objectTwo = {
propertyOne: str,
propertyTwo: num
}
expect(objectOne).toBe(objectTwo); //returns false
Itu karena, sebagaimana tercantum dalam jawaban ini untuk pertanyaan yang berbeda, namun mirip, yang ===
operator yang benar-benar berarti bahwa kedua operan referensi objek yang sama, atau dalam hal jenis nilai, memiliki nilai yang sama.
toEqual()
akan dibandingkan dengan kunci / nilai-konten;toBe()
akan membandingkan dengan referensi objek.