Apa assert
artinya dalam JavaScript?
Saya telah melihat sesuatu seperti:
assert(function1() && function2() && function3(), "some text");
Dan ingin tahu apa metode assert()
ini.
sumber
Apa assert
artinya dalam JavaScript?
Saya telah melihat sesuatu seperti:
assert(function1() && function2() && function3(), "some text");
Dan ingin tahu apa metode assert()
ini.
Tidak ada assert
dalam JavaScript (belum; ada pembicaraan tentang menambahkan satu , tapi ini pada tahap awal). Mungkin Anda menggunakan beberapa perpustakaan yang menyediakannya. Arti yang biasa adalah melempar kesalahan jika ekspresi yang dilewatkan ke fungsi salah; ini adalah bagian dari konsep umum pengecekan asersi . Biasanya pernyataan (sebagaimana mereka disebut) digunakan hanya dalam membangun "pengujian" atau "debug" dan dihapus dari kode produksi.
Misalkan Anda memiliki fungsi yang seharusnya selalu menerima string. Anda ingin tahu apakah seseorang memanggil fungsi itu dengan sesuatu yang bukan string. Jadi, Anda mungkin melakukannya:
assert(typeof argumentName === "string");
... di mana assert
akan melempar kesalahan jika kondisinya salah.
Versi yang sangat sederhana akan terlihat seperti ini:
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
Lebih baik lagi, gunakan Error
objek jika mesin JavaScript mendukungnya (yang benar-benar tua mungkin tidak), yang memiliki keuntungan mengumpulkan jejak tumpukan dan semacamnya:
function assert(condition, message) {
if (!condition) {
message = message || "Assertion failed";
if (typeof Error !== "undefined") {
throw new Error(message);
}
throw message; // Fallback
}
}
Bahkan IE8 memiliki Error
(walaupun tidak memiliki stack
properti, tetapi mesin modern [termasuk IE modern] memilikinya).
assert
.if(!condition)
adalah pengaturanvar throwError=true;
makadebugger;
kemudian bungkus bagian lemparan dalamif(throwError)
. Dengan begitu, jika saya memiliki debugger terbuka, itu akan rusak, dan jika saya ingin saya dapat mengaturthrowError
ke false dan kemudian memeriksa semua cakupan sambil melangkah keluar.throw
. Dengan begitu Anda tidak perludebugger;
pernyataan itu. Lihat developer.chrome.com/devtools/docs/… untuk lebih lanjut.if
dengan operator bersyarat. Bagaimanapun, di dunia saat ini, saya tidak akan repot-repot mendukung mesin yang tidak memilikiError
.Jika menggunakan browser modern atau nodejs, Anda dapat menggunakan
console.assert(expression, object)
.Untuk informasi lebih lanjut:
sumber
console.error
kode terus dieksekusi.console.assert
tidak begitu baik kecuali jika ia memiliki perilaku yang samathrow
.console.assert
ini adalah karena pernyataan bukan fungsi penanganan kesalahan. Mereka dirancang untuk memeriksa kebenaran kode selama pengembangan saja. Secara tradisional mereka benar-benar dinonaktifkan di lingkungan produksi untuk menghindari pemutusan sistem hidup karena sesuatu yang sepele. Browser dianggap sebagai lingkungan produksi, jadiconsole.assert
tidak menghentikan eksekusi di sana. Jika Anda mengandalkan pernyataan untuk menghentikan eksekusi, maka Anda harus menggunakan penanganan kesalahan yang tepat, karena ini bukan tujuan pernyataan.Jawaban lainnya bagus: tidak ada fungsi tegas yang dibangun ke dalam ECMAScript5 (mis. JavaScript yang pada dasarnya berfungsi di mana-mana), tetapi beberapa browser memberikannya kepada Anda atau memiliki pengaya yang menyediakan fungsionalitas itu. Meskipun mungkin lebih baik menggunakan perpustakaan yang mapan / populer / dikelola untuk ini, untuk tujuan akademik fungsi "orang miskin menegaskan" mungkin terlihat seperti ini:
sumber
try
,catch
,throw
)assert()
bukan fungsi javascript asli. Ini adalah fungsi khusus yang dibuat seseorang. Anda harus mencarinya di halaman Anda atau di file Anda dan mempostingnya untuk siapa saja untuk membantu menentukan apa yang dilakukannya.sumber
Periksa ini: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-quick-and-easy-javascript-testing-with-assert/
itu untuk menguji JavaScript. Hebatnya, pada hampir lima atau enam baris, kode ini memberikan tingkat kekuatan dan kontrol yang besar terhadap kode Anda, saat pengujian.
Fungsi penegasan menerima dua parameter:
hasil: Boolean, yang merujuk apakah tes Anda lulus atau gagal
description: Deskripsi singkat dari tes Anda.
Fungsi assert kemudian hanya membuat item daftar, menerapkan kelas "lulus" atau "gagal," tergantung pada apakah tes Anda kembali benar atau salah, dan kemudian menambahkan deskripsi ke item daftar. Akhirnya, blok kode itu ditambahkan ke halaman. Ini gila sederhana, tetapi bekerja dengan sempurna.
sumber
Berikut ini adalah implementasi fungsi penegasan yang sangat sederhana. Dibutuhkan nilai dan deskripsi tentang apa yang Anda uji.
Jika nilai bernilai true, nilai itu lewat.
Jika kembali salah, gagal.
sumber
Jika pernyataan salah, pesan ditampilkan. Khususnya, jika argumen pertama salah, argumen kedua (pesan string) akan dicatat di konsol alat pengembang. Jika argumen pertama benar, pada dasarnya tidak ada yang terjadi. Contoh sederhana - Saya menggunakan Alat Pengembang Google:
sumber
Mungkin datang dengan pustaka pengujian yang menggunakan beberapa kode Anda. Berikut ini contohnya (kemungkinan bukan pustaka yang sama dengan kode Anda, tetapi ini menunjukkan ide umum):
http://chaijs.com/guide/styles/#assert
sumber
Kata atau fungsi "menegaskan" sebagian besar digunakan dalam pengujian bagian aplikasi.
Fungsi penegasan adalah cara singkat untuk menginstruksikan program untuk memeriksa kondisi (juga disebut "pernyataan") dan jika kondisinya tidak Benar, itu akan menimbulkan kesalahan.
Jadi mari kita lihat bagaimana tampilannya dalam "kode normal"
if (typeof "string" === "array") { throw Error('Error: "string" !== "array"'); }
Dengan
assert
Anda cukup menulis:assert(typeof "string" === "array")
Di Javascript, tidak ada yang asli
assert
fungsi , jadi Anda harus menggunakan satu dari beberapa perpustakaan.Untuk pengantar sederhana, Anda dapat memeriksa artikel ini:
http://fredkschott.com/post/2014/05/nodejs-testing-essentials/
Saya harap ini membantu.
sumber
Penegasan melempar pesan kesalahan jika atribut pertama salah, dan atribut kedua adalah pesan yang akan dibuang.
Ada banyak komentar yang mengatakan pernyataan tidak ada dalam JavaScript tetapi
console.assert()
fungsi penegasan dalam JavaScript Gagasan penegasan adalah untuk menemukan mengapa / di mana bug terjadi.Di sini tergantung pada pesan Anda dapat menemukan apa bug itu. Pesan-pesan kesalahan ini akan ditampilkan ke konsol dalam warna merah seolah-olah kita dipanggil
console.error();
untuk melihat lebih banyak fungsi di konsol mengeksekusi
console.log(console);
sumber
Jawaban sebelumnya dapat ditingkatkan dalam hal kinerja dan kompatibilitas.
Periksa sekali apakah
Error
objek itu ada, jika tidak menyatakannya:Kemudian, setiap pernyataan akan memeriksa kondisi, dan selalu melempar
Error
objekPerlu diingat bahwa konsol tidak akan menampilkan nomor baris kesalahan nyata, tetapi baris
assert
fungsi, yang tidak berguna untuk debugging.sumber
Jika Anda menggunakan Webpack, Anda hanya dapat menggunakan perpustakaan pernyataan node.js . Meskipun mereka mengklaim bahwa itu "tidak dimaksudkan untuk menjadi perpustakaan pernyataan tujuan umum", tampaknya lebih dari OK untuk pernyataan sementara, dan tampaknya tidak ada pesaing di ruang Node (Chai dirancang untuk pengujian unit).
Anda perlu menggunakan webpack atau browserify untuk dapat menggunakan ini, jadi jelas ini hanya berguna jika sudah ada dalam alur kerja Anda.
sumber
Selain opsi lain seperti console.assert atau bergulir sendiri , Anda dapat menggunakan invarian . Ini memiliki beberapa fitur unik:
%s
specifier).sumber
Seperti yang disebutkan oleh TJ, Tidak ada
assert
dalam JavaScript. Namun, ada modul simpul bernama assert , yang digunakan sebagian besar untuk pengujian . jadi, Anda mungkin melihat kode seperti:sumber