Lua Academy · Pelajaran

Penegasan

Nyatakan tingkah laku yang dijangka.

Pelajaran 3 daripada 413 langkah

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.

Percuma untuk bermula

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.

Semua pelajaran dalam kursus ini

  1. Mengapa Menguji
  2. Blok describe dan it
  3. Penegasan
  4. Mock dan Spy
← Kembali ke Lua Academy