ม็อก ของจำลอง และความครอบคลุม
แยกหน่วยย่อยและวัดสิ่งที่คุณทดสอบ
ม็อก ของจำลอง และความครอบคลุม เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
แยกหน่วยออกมา
การทดสอบหน่วยควรตรวจสอบโค้ดหนึ่งส่วนอย่างเป็นอิสระ ฐานข้อมูลหรือเครือข่ายจริงทำให้การทดสอบช้าและไม่แน่นอน เราจึงแทนที่สิ่งเหล่านั้น 🔌
ตัวแทนสำหรับการทดสอบ
ตัวแทนสำหรับการทดสอบทำหน้าที่แทนสิ่งที่โค้ดต้องพึ่งพาจริง ม็อก ของจำลอง และสตับคือรูปแบบที่ใช้กันทั่วไป
ทำความรู้จัก fake
fake มีการทำงานที่ใช้ได้จริงแต่เรียบง่ายกว่า เช่น รายการในหน่วยความจำที่ทำหน้าที่แทนฐานข้อมูลจริง
class FakeRepo implements Repo {
final _items = <Item>[];
}ทำความรู้จัก mock
mock บันทึกว่าถูกเรียกใช้อย่างไร เพื่อให้คุณตรวจสอบการโต้ตอบได้ ไม่ใช่เพียงค่าผลลัพธ์สุดท้าย
แพ็กเกจ mockito
แพ็กเกจ mockito สร้างม็อกให้คุณ เพียงใส่คำอธิบายกำกับชนิดที่ต้องการ แล้วเรียกใช้ build_runner เพื่อสร้างม็อก
@GenerateMocks([Repo])
import 'repo_test.mocks.dart';สร้างสตับด้วย when
ใช้ when เพื่อกำหนดพฤติกรรมของม็อก: เมื่อมีการเรียกใช้เมธอดนี้ ให้คืนค่าดังกล่าว เพื่อให้พฤติกรรมคาดเดาได้
when(repo.find(1))
.thenReturn(Item('a'));ตรวจสอบการเรียกใช้
ใช้ verify เพื่อยืนยันว่าเมธอดถูกเรียกใช้และถูกเรียกกี่ครั้ง ซึ่งพิสูจน์ว่าโค้ดของคุณสื่อสารกับสิ่งที่ต้องพึ่งพาได้ถูกต้อง
verify(repo.save(any)).called(1);สร้างสตับแบบไม่พร้อมกัน
สำหรับเมธอดที่คืนค่า Future ให้กำหนดพฤติกรรมด้วย thenAnswer เพื่อให้ม็อกคืนผลลัพธ์แบบไม่พร้อมกันได้
when(api.load())
.thenAnswer((_) async => 'ok');ม็อกกับ fake
เลือกใช้ fake เมื่อต้องการพฤติกรรมที่สมจริง และใช้ม็อกเมื่อต้องการตรวจสอบว่ามีการเรียกใช้รายการใดเกิดขึ้นบ้าง
ความครอบคลุมหมายถึงอะไร
ความครอบคลุมวัดว่าการทดสอบของคุณเรียกใช้บรรทัดใดบ้าง ความครอบคลุมสูงบ่งชี้ถึงการตรวจสอบที่ทั่วถึง แต่อย่างไรก็ไม่รับประกันความถูกต้อง
สร้างรายงานความครอบคลุม
เรียกใช้การทดสอบพร้อมเก็บข้อมูล ความครอบคลุม จากนั้นแปลงข้อมูลเป็นรายงานที่คุณอ่านหรืออัปโหลดไปยังเครื่องมือได้
dart test --coverage=coverageตรวจสอบอย่างรวดเร็ว
ตัวแทนสำหรับการทดสอบชนิดใดบันทึกการเรียกใช้เพื่อให้คุณตรวจสอบได้
สรุปทบทวน
คุณแยกหน่วยด้วย fake และ mock สร้างสตับด้วย when ตรวจสอบการเรียกใช้ และวัดความครอบคลุม การทดสอบจึงรวดเร็ว มุ่งเน้น และน่าเชื่อถือ 🎯
คำถามที่พบบ่อย
บทเรียน “ม็อก ของจำลอง และความครอบคลุม” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ม็อก ของจำลอง และความครอบคลุม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ม็อก ของจำลอง และความครอบคลุม”
แยกหน่วยย่อยและวัดสิ่งที่คุณทดสอบ คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ม็อก ของจำลอง และความครอบคลุม” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม
ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- test และ expect แรกของคุณ
- group, setUp และ tearDown
- การทดสอบโค้ดแบบไม่พร้อมกันและสตรีม
- ม็อก ของจำลอง และความครอบคลุม