ผู้จัดหาข้อมูลสำหรับการทดสอบแบบกำหนดพารามิเตอร์
เรียกใช้การทดสอบเดิมกับข้อมูลนำเข้าหลายชุดโดยใช้ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตั้งค่า PHPUnit และการทดสอบแรก
- การยืนยันผลและเมธอดการทดสอบ
- ผู้จัดหาข้อมูลสำหรับการทดสอบแบบกำหนดพารามิเตอร์
- การจำลองการพึ่งพาด้วย PHPUnit