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

ผู้จัดหาข้อมูลสำหรับการทดสอบแบบกำหนดพารามิเตอร์

เรียกใช้การทดสอบเดิมกับข้อมูลนำเข้าหลายชุดโดยใช้ dataProvider

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

ตัวจัดหาข้อมูลคืออะไร

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

ตัวจัดหาข้อมูลพื้นฐาน

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

<?php
public static function additionProvider(): array
{
    return [
        "two positives" => [2, 3, 5],
        "negative"      => [-1, 1, 0],
        "zeros"         => [0, 0, 0],
    ];
}

การเชื่อมโยงด้วยแอตทริบิวต์ (PHPUnit 10 ขึ้นไป)

ใช้แอตทริบิวต์ #[DataProvider] เพื่อเชื่อมโยงการทดสอบกับตัวจัดหาข้อมูล

<?php
use PHPUnit\Framework\Attributes\DataProvider;

#[DataProvider("additionProvider")]
public function test_add(int $a, int $b, int $expected): void
{
    $this->assertSame($expected, (new Calculator())->add($a, $b));
}

ชุดข้อมูลที่มีชื่อ

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

<?php
public static function emailProvider(): array
{
    return [
        "valid email"      => ["user@example.com", true],
        "missing @"        => ["userexample.com",  false],
        "missing domain"   => ["user@",            false],
        "international"    => ["用户@例子.com",      true],
    ];
}

การคืนค่าตัวสร้าง

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

<?php
public static function largeProvider(): Generator
{
    for ($i = 1; $i <= 1000; $i++) {
        yield "case $i" => [$i, $i * 2];
    }
}

แหล่งข้อมูลภายนอก

โหลดข้อมูลการทดสอบจาก CSV, JSON หรือฐานข้อมูลภายในเมธอดของตัวจัดหาข้อมูล เพื่อขับเคลื่อนการทดสอบด้วยข้อมูลจากสถานการณ์จริง

<?php
public static function csvProvider(): array
{
    $rows = array_map("str_getcsv", file("tests/fixtures/data.csv"));
    return array_map(fn($r) => [$r[0], (int)$r[1], (int)$r[2]], $rows);
}

ตัวจัดหาข้อมูลหลายรายการ

เมธอดการทดสอบสามารถอ้างอิงตัวจัดหาข้อมูลหลายรายการได้ด้วยการวางแอตทริบิวต์ซ้อนกัน

ตัวจัดหาข้อมูลต้องเป็นแบบคงที่

เมธอดของตัวจัดหาข้อมูลต้องประกาศเป็น static เนื่องจาก PHPUnit เรียกใช้เมธอดเหล่านี้ก่อนสร้างอินสแตนซ์ของคลาสการทดสอบ

การทดสอบกรณีขอบ

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

ผลลัพธ์จากตัวจัดหาข้อมูล

ข้อผิดพลาดจะแสดงชื่อชุดข้อมูล: CalculatorTest::test_add with data set "negative" ([-1, 1, 0]) ทำให้ระบุกรณีที่ล้มเหลวได้ง่าย

การใช้ตัวจัดหาข้อมูลร่วมกับ setUp

สามารถใช้ตัวจัดหาข้อมูลร่วมกับ setUp ได้ โดย setUp จะทำงานก่อนแต่ละรอบ ทำให้แต่ละชุดข้อมูลได้รับออบเจ็กต์ที่กำลังทดสอบตัวใหม่

ข้อควรพิจารณาด้านประสิทธิภาพ

ตัวจัดหาข้อมูลจะทำงานขณะโหลดชุดการทดสอบ ควรหลีกเลี่ยงการดำเนินการที่ใช้เวลานาน (การเรียก HTTP และการสืบค้นฐานข้อมูล) ในตัวจัดหาข้อมูล และเลือกใช้ตัวสร้างกับชุดข้อมูลทดสอบแทน

สรุป

ตัวจัดหาข้อมูลช่วยขจัดโค้ดการทดสอบที่ซ้ำซ้อน ใช้คีย์แบบแอสโซซิเอทีฟเพื่อสร้างข้อความแจ้งข้อผิดพลาดที่สื่อความหมาย ประกาศตัวจัดหาข้อมูลเป็น static และเชื่อมโยงด้วยแอตทริบิวต์ #[DataProvider]

ตรวจสอบความเข้าใจ

ตัวจัดหาข้อมูลต้องใช้ตัวแก้ไขการมองเห็นใด

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

บทเรียน “ผู้จัดหาข้อมูลสำหรับการทดสอบแบบกำหนดพารามิเตอร์” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ผู้จัดหาข้อมูลสำหรับการทดสอบแบบกำหนดพารามิเตอร์”

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

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

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

บทเรียน “ผู้จัดหาข้อมูลสำหรับการทดสอบแบบกำหนดพารามิเตอร์” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การตั้งค่า PHPUnit และการทดสอบแรก
  2. การยืนยันผลและเมธอดการทดสอบ
  3. ผู้จัดหาข้อมูลสำหรับการทดสอบแบบกำหนดพารามิเตอร์
  4. การจำลองการพึ่งพาด้วย PHPUnit
← กลับไปที่ PHP Academy