Penegasan
Nyatakan tingkah laku yang dijangka.
Penegasan ialah pelajaran Lua Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Lua Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Fungsi Penegasan
Penegasan ialah inti pati ujian. Penegasan menyatakan fakta yang mesti benar. Jika benar, ujian diteruskan. Jika tidak, busted merekodkan kegagalan dengan mesej yang membantu.
busted menggunakan pustaka luassert, yang dicapai melalui jadual global assert.
assert.are.equal(4, 2 + 2)are.equal
assert.are.equal menyemak kesamaan dengan operator ==. Argumen pertama ialah nilai yang dijangka, manakala argumen kedua ialah nilai sebenar.
Ini berfungsi untuk nombor, rentetan, dan boolean, tetapi bagi jadual, perbandingan adalah berdasarkan identiti, bukan kandungan.
assert.are.equal("hello", greet())
assert.are.equal(10, count)are.same untuk Jadual
Untuk membandingkan kandungan jadual secara mendalam, gunakan assert.are.same. Ia menyemak secara rekursif bahawa dua jadual mengandungi nilai yang sama.
Gunakan same untuk struktur data dan equal untuk nilai primitif atau semakan identiti.
assert.are.same({1, 2, 3}, split("1,2,3"))
assert.are.same({x = 1}, point)Nilai Benar
assert.is_true dan assert.is_false menyemak nilai benar atau palsu yang tepat. assert.is_truthy menerima apa-apa nilai yang bukan nil atau false.
Pilih varian ketat apabila anda menjangkakan hasil benar atau palsu secara khusus.
assert.is_true(user.active)
assert.is_truthy(find("x"))
assert.is_false(list:isEmpty())Semakan Nil
assert.is_nil mengesahkan bahawa sesuatu nilai ialah nil, manakala assert.is_not_nil mengesahkan bahawa nilai itu wujud. Semakan ini biasa digunakan untuk menyemak hasil carian.
Semakan ini menjadikan tujuan kod lebih jelas berbanding membandingkan nilai dengan nil menggunakan equal.
assert.is_nil(map["missing"])
assert.is_not_nil(map["found"])Penafian dengan is_not
Kebanyakan penegasan boleh dinafikan dengan memasukkan is_not atau menggunakan bentuk are_not. Ini menyatakan bahawa sesuatu mestilah berbeza.
Contohnya, assert.are_not.equal berjaya apabila dua nilai itu berbeza.
assert.are_not.equal(1, 2)
assert.is_not_nil(result)Menguji Ralat
Untuk menegaskan bahawa kod menghasilkan ralat, bungkus kod itu dalam fungsi dan hantarkannya kepada assert.has_error. busted memanggil fungsi tersebut dan mengesahkan bahawa fungsi itu menghasilkan ralat.
Anda juga boleh menyemak mesej ralat dengan menghantar rentetan yang dijangka sebagai argumen kedua.
assert.has_error(function()
withdraw(-5)
end, "amount must be positive")has_no.errors
Semakan yang bertentangan ialah assert.has_no.errors. Semakan ini berjaya apabila fungsi yang dibungkus berjalan tanpa menghasilkan ralat.
Ini berguna untuk mengesahkan bahawa panggilan pada laluan berjaya tidak mengalami kegagalan, walaupun anda tidak menegaskan nilai pulangannya.
assert.has_no.errors(function()
parse("valid input")
end)Mesej Kegagalan Tersuai
Anda boleh melampirkan mesej pada kebanyakan penegasan untuk menjelaskan kegagalan. Hantarkan mesej itu sebagai argumen tambahan supaya laporan menerangkan perkara yang dijangkakan.
Mesej yang jelas menukar kegagalan yang sukar difahami menjadi maklumat yang boleh diambil tindakan.
assert.is_true(ok, "login should succeed")Pemadanan dengan Pengubah
luassert menyediakan pengubah dan pemadan untuk semakan yang lebih terperinci. Contohnya, assert.matches menguji rentetan terhadap corak Lua.
Ini berguna apabila semakan kesamaan tepat terlalu ketat untuk keluaran yang berubah-ubah.
assert.matches("%d%d%d%d", get_year())
assert.matches("error", log_line, 1, true)Memilih Penegasan yang Tepat
Pilih penegasan yang paling khusus untuk mendapatkan kod yang jelas. Gunakan same untuk jadual, equal untuk nilai primitif, has_error untuk kegagalan, dan semakan nilai benar atau palsu untuk nilai logik.
Penegasan khusus menghasilkan mesej kegagalan yang lebih baik, lalu mempercepat penyahpepijatan.
describe("queue", function()
it("dequeues in order", function()
assert.are.same({"a", "b"}, q:drain())
end)
end)Semakan Pantas
Uji kefahaman anda tentang penegasan busted.
Imbas Kembali
luassert menggerakkan jadual assert milik busted. Gunakan are.equal untuk nilai primitif, are.same untuk perbandingan jadual secara mendalam, serta semakan nilai benar atau palsu dan nil apabila sesuai.
Uji kegagalan dengan has_error dan kejayaan dengan has_no.errors. Nafikan dengan is_not, dan tambahkan mesej untuk menghasilkan laporan yang lebih jelas.
Pelajari Lua dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 40
- Pelajaran
- 159
Soalan Lazim
Adakah pelajaran “Penegasan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Lua Academy, termasuk “Penegasan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Penegasan”?
Nyatakan tingkah laku yang dijangka. Anda berlatih Lua Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Lua Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Lua Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Penegasan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.