0Pricing
Lua Academy · บทเรียน

การยืนยัน

แสดงพฤติกรรมที่คาดหวัง

การยืนยัน เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

หน้าที่ของการยืนยัน

การยืนยันคือหัวใจของการทดสอบ เป็นการระบุข้อเท็จจริงที่ต้องเป็นจริง หากเป็นจริง การทดสอบจะดำเนินต่อไป หากไม่เป็นจริง busted จะบันทึกความล้มเหลวพร้อมข้อความที่เป็นประโยชน์

busted ใช้ไลบรารี luassert ซึ่งเข้าถึงผ่านตารางส่วนกลาง assert

assert.are.equal(4, 2 + 2)

are.equal

assert.are.equal ตรวจสอบความเท่ากันด้วยตัวดำเนินการ == อาร์กิวเมนต์แรกคือค่าที่คาดหวัง ส่วนอาร์กิวเมนต์ที่สองคือค่าจริง

วิธีนี้ใช้ได้กับตัวเลข สตริง และค่าบูลีน แต่สำหรับตารางจะเปรียบเทียบเอกลักษณ์ ไม่ใช่เนื้อหาภายใน

assert.are.equal("hello", greet())
assert.are.equal(10, count)

are.same สำหรับตาราง

หากต้องการเปรียบเทียบเนื้อหาในตารางแบบเจาะลึก ให้ใช้ assert.are.same ฟังก์ชันนี้จะตรวจสอบแบบเรียกซ้ำว่าตารางสองตารางเก็บค่าที่เท่ากันหรือไม่

ใช้ same กับโครงสร้างข้อมูล และใช้ equal กับค่าพื้นฐานหรือการตรวจสอบว่าเป็นอ็อบเจ็กต์เดียวกัน

assert.are.same({1, 2, 3}, split("1,2,3"))
assert.are.same({x = 1}, point)

ค่าที่ถือว่าเป็นจริง

assert.is_true และ assert.is_false ตรวจสอบค่าบูลีนที่ตรงกันแบบเจาะจง ส่วน assert.is_truthy ยอมรับค่าทุกชนิดที่ไม่ใช่ nil หรือค่าเท็จ

เลือกแบบเข้มงวดเมื่อคุณคาดหวังผลลัพธ์ที่เป็นค่าบูลีนโดยเฉพาะ

assert.is_true(user.active)
assert.is_truthy(find("x"))
assert.is_false(list:isEmpty())

การตรวจสอบค่า nil

assert.is_nil ตรวจสอบว่าค่าเป็น nil และ assert.is_not_nil ตรวจสอบว่าค่านั้นมีอยู่ การตรวจสอบเหล่านี้ใช้บ่อยเมื่อตรวจสอบผลการค้นหา

การใช้วิธีเหล่านี้ทำให้เจตนาชัดเจนกว่าการเปรียบเทียบกับ nil ด้วย equal

assert.is_nil(map["missing"])
assert.is_not_nil(map["found"])

การปฏิเสธด้วย is_not

การยืนยันส่วนใหญ่สามารถเปลี่ยนเป็นการตรวจสอบค่าตรงข้ามได้ด้วยการแทรก is_not หรือใช้รูปแบบ are_not วิธีนี้สื่อว่าค่าบางอย่างต้องแตกต่างกัน

ตัวอย่างเช่น assert.are_not.equal จะผ่านเมื่อค่าทั้งสองแตกต่างกัน

assert.are_not.equal(1, 2)
assert.is_not_nil(result)

การทดสอบข้อผิดพลาด

หากต้องการยืนยันว่าโค้ดทำให้เกิดข้อผิดพลาด ให้ห่อโค้ดนั้นไว้ในฟังก์ชันแล้วส่งให้ assert.has_error busted จะเรียกฟังก์ชันและยืนยันว่าฟังก์ชันนั้นทำให้เกิดข้อผิดพลาด

คุณยังตรวจสอบข้อความข้อผิดพลาดได้ด้วยการส่งสตริงที่คาดหวังเป็นอาร์กิวเมนต์ตัวที่สอง

assert.has_error(function()
  withdraw(-5)
end, "amount must be positive")

has_no.errors

การตรวจสอบในทางตรงข้ามคือ assert.has_no.errors ซึ่งจะผ่านเมื่อฟังก์ชันที่ห่อไว้ทำงานโดยไม่ทำให้เกิดข้อผิดพลาด

วิธีนี้มีประโยชน์สำหรับยืนยันว่าการเรียกในกรณีสำเร็จไม่ทำให้โปรแกรมหยุดทำงาน แม้คุณจะไม่ได้ยืนยันค่าที่ฟังก์ชันส่งกลับ

assert.has_no.errors(function()
  parse("valid input")
end)

ข้อความกำหนดเองเมื่อไม่ผ่าน

คุณสามารถแนบข้อความกับการยืนยันส่วนใหญ่เพื่ออธิบายสาเหตุที่ไม่ผ่านได้ โดยส่งข้อความนั้นเป็นอาร์กิวเมนต์เพิ่มเติม เพื่อให้รายงานอธิบายสิ่งที่คาดหวัง

ข้อความที่ชัดเจนจะเปลี่ยนข้อผิดพลาดที่เข้าใจยากให้กลายเป็นปัญหาที่แก้ไขได้

assert.is_true(ok, "login should succeed")

การจับคู่ด้วยตัวปรับแต่ง

luassert มีตัวปรับแต่งและตัวจับคู่สำหรับการตรวจสอบที่ละเอียดขึ้น ตัวอย่างเช่น assert.matches ใช้ทดสอบสตริงกับรูปแบบของ Lua

วิธีนี้มีประโยชน์เมื่อการตรวจสอบความเท่ากันแบบตรงตัวเข้มงวดเกินไปสำหรับผลลัพธ์ที่เปลี่ยนแปลงได้

assert.matches("%d%d%d%d", get_year())
assert.matches("error", log_line, 1, true)

การเลือกการยืนยันที่เหมาะสม

เลือกการยืนยันที่เฉพาะเจาะจงที่สุดเพื่อให้โค้ดชัดเจน ใช้ same กับตาราง ใช้ equal กับค่าพื้นฐาน ใช้ has_error กับข้อผิดพลาด และใช้การตรวจสอบค่าที่ถือว่าเป็นจริงกับค่าบูลีน

การยืนยันที่เฉพาะเจาะจงจะสร้างข้อความข้อผิดพลาดที่ดีกว่า ทำให้การแก้จุดบกพร่องรวดเร็วขึ้น

describe("queue", function()
  it("dequeues in order", function()
    assert.are.same({"a", "b"}, q:drain())
  end)
end)

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจของคุณเกี่ยวกับการยืนยันของ busted

ทบทวน

luassert จัดเตรียมตาราง assert ให้กับ busted ใช้ are.equal กับค่าพื้นฐาน ใช้ are.same เพื่อเปรียบเทียบตารางแบบเจาะลึก และใช้การตรวจสอบค่าที่ถือว่าเป็นจริงหรือค่า nil ตามความเหมาะสม

ทดสอบข้อผิดพลาดด้วย has_error และทดสอบความสำเร็จด้วย has_no.errors ใช้ is_not เพื่อปฏิเสธผล และเพิ่มข้อความเพื่อให้รายงานชัดเจนขึ้น

คำถามที่พบบ่อย

บทเรียน “การยืนยัน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การยืนยัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การยืนยัน”

แสดงพฤติกรรมที่คาดหวัง คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การยืนยัน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม

ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดจึงต้องทดสอบ
  2. บล็อก describe และ it
  3. การยืนยัน
  4. ม็อกและสปาย
← กลับไปที่ Lua Academy