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 foobenar-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 expectboolean. Perhatikan bahwa sebaliknya untuk apa jawaban yang diterima saat ini menyiratkan , == trueadalah 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-expectsetelah proyek selanjutnya terdaftar jasmine-matcherspertama).
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 Booleanobjek. 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.