การยืนยัน
แสดงพฤติกรรมที่คาดหวัง
การยืนยัน เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ