Asersi
Nyatakan perilaku yang diharapkan.
Asersi adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.
Fungsi Pernyataan Penegasan
Pernyataan penegasan adalah inti pengujian. Pernyataan ini menyatakan fakta yang harus benar. Jika benar, pengujian berlanjut. Jika tidak, busted mencatat kegagalan dengan pesan yang membantu.
busted menggunakan pustaka luassert, yang diakses melalui tabel global assert.
assert.are.equal(4, 2 + 2)are.equal
assert.are.equal memeriksa kesamaan dengan operator ==. Argumen pertama adalah nilai yang diharapkan, sedangkan argumen kedua adalah nilai sebenarnya.
Hal ini berfungsi untuk angka, string, dan boolean, tetapi untuk tabel, yang dibandingkan adalah identitasnya, bukan isinya.
assert.are.equal("hello", greet())
assert.are.equal(10, count)are.same untuk Tabel
Untuk membandingkan isi tabel secara mendalam, gunakan assert.are.same. Fungsi ini memeriksa secara rekursif bahwa dua tabel menyimpan nilai yang sama.
Gunakan same untuk struktur data dan equal untuk nilai primitif atau pemeriksaan identitas.
assert.are.same({1, 2, 3}, split("1,2,3"))
assert.are.same({x = 1}, point)Nilai yang Dianggap Benar
assert.is_true dan assert.is_false memeriksa nilai boolean yang persis. assert.is_truthy menerima apa pun yang bukan nil atau false.
Pilih varian ketat ketika Anda secara khusus mengharapkan hasil boolean.
assert.is_true(user.active)
assert.is_truthy(find("x"))
assert.is_false(list:isEmpty())Pemeriksaan Nil
assert.is_nil memverifikasi bahwa suatu nilai adalah nil, sedangkan assert.is_not_nil memverifikasi bahwa nilai tersebut ada. Keduanya umum digunakan saat memeriksa hasil pencarian.
Keduanya memperjelas maksud dibandingkan membandingkan dengan nil menggunakan equal.
assert.is_nil(map["missing"])
assert.is_not_nil(map["found"])Negasi dengan is_not
Sebagian besar asersi dapat dinegasikan dengan menyisipkan is_not atau menggunakan bentuk are_not. Ini menyatakan bahwa sesuatu harus berbeda.
Misalnya, assert.are_not.equal berhasil ketika kedua nilai berbeda.
assert.are_not.equal(1, 2)
assert.is_not_nil(result)Menguji Kesalahan
Untuk memastikan bahwa kode menghasilkan kesalahan, bungkus kode tersebut dalam sebuah fungsi dan teruskan ke assert.has_error. busted memanggil fungsi itu dan memastikan bahwa fungsi tersebut menghasilkan kesalahan.
Anda juga dapat memeriksa pesan kesalahan dengan meneruskan string yang diharapkan sebagai argumen kedua.
assert.has_error(function()
withdraw(-5)
end, "amount must be positive")has_no.errors
Pemeriksaan kebalikannya adalah assert.has_no.errors. Pemeriksaan ini berhasil ketika fungsi yang dibungkus berjalan tanpa menghasilkan kesalahan.
Ini berguna untuk memastikan bahwa pemanggilan pada jalur sukses tidak mengalami kerusakan, meskipun Anda tidak memeriksa nilai kembaliannya.
assert.has_no.errors(function()
parse("valid input")
end)Pesan Kegagalan Khusus
Anda dapat menambahkan pesan ke sebagian besar asersi untuk memperjelas kegagalan. Teruskan pesan itu sebagai argumen tambahan agar laporan menjelaskan ekspektasinya.
Pesan yang jelas mengubah kegagalan yang membingungkan menjadi informasi yang dapat ditindaklanjuti.
assert.is_true(ok, "login should succeed")Pencocokan dengan Pengubah
luassert menyediakan pengubah dan pencocok untuk pemeriksaan yang lebih kaya. Misalnya, assert.matches menguji string terhadap pola Lua.
Ini berguna ketika pemeriksaan kesamaan persis terlalu ketat untuk keluaran yang berubah-ubah.
assert.matches("%d%d%d%d", get_year())
assert.matches("error", log_line, 1, true)Memilih Asersi yang Tepat
Pilih asersi yang paling spesifik agar maksudnya jelas. Gunakan same untuk tabel, equal untuk nilai primitif, has_error untuk kegagalan, dan pemeriksaan nilai benar untuk boolean.
Asersi yang spesifik menghasilkan pesan kegagalan yang lebih baik sehingga proses penelusuran kesalahan menjadi lebih cepat.
describe("queue", function()
it("dequeues in order", function()
assert.are.same({"a", "b"}, q:drain())
end)
end)Pemeriksaan Singkat
Uji pemahaman Anda tentang asersi busted.
Ringkasan
luassert menyediakan tabel assert milik busted. Gunakan are.equal untuk nilai primitif, are.same untuk perbandingan tabel secara mendalam, serta pemeriksaan nilai benar atau nil jika sesuai.
Uji kegagalan dengan has_error dan keberhasilan dengan has_no.errors. Gunakan is_not untuk negasi, dan tambahkan pesan agar laporan lebih jelas.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Asersi” gratis?
Ya — teks lengkap “Asersi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Asersi”?
Nyatakan perilaku yang diharapkan. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Lua Academy?
Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Asersi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.