Apa yang saya lakukan ketika saya bertanya-tanya sesuatu seperti pertanyaan yang diajukan di sini adalah pergi ke sumbernya.
menjadi()
expect().toBe()
didefinisikan sebagai:
function toBe() {
return {
compare: function(actual, expected) {
return {
pass: actual === expected
};
}
};
}
Itu melakukan tes dengan ===
yang berarti bahwa ketika digunakan sebagai expect(foo).toBe(true)
, itu akan berlalu hanya jika foo
benar-benar memiliki nilai true
. Nilai kebenaran tidak akan lulus uji.
toBeTruthy ()
expect().toBeTruthy()
didefinisikan sebagai:
function toBeTruthy() {
return {
compare: function(actual) {
return {
pass: !!actual
};
}
};
}
Ketik paksaan
Nilai benar jika paksaan dari nilai ini ke boolean menghasilkan nilai true
. Operasi !!
menguji kebenaran dengan memaksa nilai yang diteruskan ke expect
boolean. Perhatikan bahwa sebaliknya untuk apa jawaban yang diterima saat ini menyiratkan , == true
adalah tidak tes yang benar untuk truthiness. Anda akan mendapatkan hal-hal lucu seperti
> "hello" == true
false
> "" == true
false
> [] == true
false
> [1, 2, 3] == true
false
Sedangkan menggunakan !!
hasil:
> !!"hello"
true
> !!""
false
> !![1, 2, 3]
true
> !![]
true
(Ya, kosong atau tidak, array itu benar.)
toBeTrue ()
expect().toBeTrue()
adalah bagian dari Jasmine-Matchers (yang didaftarkan pada npm seperti jasmine-expect
setelah proyek selanjutnya terdaftar jasmine-matchers
pertama).
expect().toBeTrue()
didefinisikan sebagai:
function toBeTrue(actual) {
return actual === true ||
is(actual, 'Boolean') &&
actual.valueOf();
}
Bedanya dengan expect().toBeTrue()
dan expect().toBe(true)
adalah bahwa expect().toBeTrue()
tes apakah itu berurusan dengan Boolean
objek. expect(new Boolean(true)).toBe(true)
akan gagal sedangkan expect(new Boolean(true)).toBeTrue()
akan lulus. Ini karena hal lucu ini:
> new Boolean(true) === true
false
> new Boolean(true) === false
false
Setidaknya itu benar:
> !!new Boolean(true)
true
Mana yang paling cocok untuk digunakan elem.isDisplayed()
?
Akhirnya busur derajat menyerahkan permintaan ini ke Selenium. The dokumentasi menyatakan bahwa nilai yang dihasilkan oleh .isDisplayed()
sebuah janji bahwa resolve ke boolean
. Saya akan mengambil nilai nominal dan menggunakan .toBeTrue()
atau .toBe(true)
. Jika saya menemukan kasus di mana implementasinya mengembalikan nilai kebenaran / kepalsuan, saya akan mengajukan laporan bug.
.toBe(true)
==.toBeTrue()
. toBeTruthy () bisa benar tidak hanya pada benar , tetapi pada 123 , "dfgdfg", [1,2,3], dll ... pada dasarnyaif(x==true)
adalah kebenaran, sementaraif(x===true)
itu benar benar.