Jawaban:
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).
if(!condition)
adalah pengaturan var throwError=true;
maka debugger;
kemudian bungkus bagian lemparan dalam if(throwError)
. Dengan begitu, jika saya memiliki debugger terbuka, itu akan rusak, dan jika saya ingin saya dapat mengatur throwError
ke false dan kemudian memeriksa semua cakupan sambil melangkah keluar.
throw
. Dengan begitu Anda tidak perlu debugger;
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 memiliki Error
.
Jika menggunakan browser modern atau nodejs, Anda dapat menggunakan console.assert(expression, object)
.
Untuk informasi lebih lanjut:
console.error
kode terus dieksekusi.
console.assert
tidak begitu baik kecuali jika ia memiliki perilaku yang sama throw
.
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, jadi console.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:
const assert = function(condition, message) {
if (!condition)
throw Error('Assert failed: ' + (message || ''));
};
assert(1 === 1); // Executes without problem
assert(false, 'Expected true');
// Yields 'Error: Assert failed: Expected true' in console
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.
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.
Berikut ini adalah implementasi fungsi penegasan yang sangat sederhana. Dibutuhkan nilai dan deskripsi tentang apa yang Anda uji.
function assert(value, description) {
var result = value ? "pass" : "fail";
console.log(result + ' - ' + description);
};
Jika nilai bernilai true, nilai itu lewat.
assert (1===1, 'testing if 1=1');
Jika kembali salah, gagal.
assert (1===2, 'testing if 1=1');
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:
var isTrue = true;
var isFalse = false;
console.assert(isTrue, 'Equals true so will NOT log to the console.');
console.assert(isFalse, 'Equals false so WILL log to the console.');
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):
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.
Penegasan melempar pesan kesalahan jika atribut pertama salah, dan atribut kedua adalah pesan yang akan dibuang.
console.assert(condition,message);
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.
console.assert(document.getElementById("title"), "You have no element with ID 'title'");
console.assert(document.getElementById("image"), "You have no element with ID 'image'");
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 mengeksekusiconsole.log(console);
Jawaban sebelumnya dapat ditingkatkan dalam hal kinerja dan kompatibilitas.
Periksa sekali apakah Error
objek itu ada, jika tidak menyatakannya:
if (typeof Error === "undefined") {
Error = function(message) {
this.message = message;
};
Error.prototype.message = "";
}
Kemudian, setiap pernyataan akan memeriksa kondisi, dan selalu melempar Error
objek
function assert(condition, message) {
if (!condition) throw new Error(message || "Assertion failed");
}
Perlu diingat bahwa konsol tidak akan menampilkan nomor baris kesalahan nyata, tetapi baris assert
fungsi, yang tidak berguna untuk debugging.
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).
const assert = require('assert');
...
assert(jqXHR.status == 201, "create response should be 201");
Anda perlu menggunakan webpack atau browserify untuk dapat menggunakan ini, jadi jelas ini hanya berguna jika sudah ada dalam alur kerja Anda.
Selain opsi lain seperti console.assert atau bergulir sendiri , Anda dapat menggunakan invarian . Ini memiliki beberapa fitur unik:
%s
specifier).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:
const assert = require('assert');
assert(5 > 7);
assert
.