Data Providers
Data providers run the same test with multiple input sets, reducing repetition and covering edge cases systematically.
Data providers run the same test with multiple input sets, reducing repetition and covering edge cases systematically.
// PHPUnit data provider
/** @dataProvider invalidEmails */
public function test_invalid_email_fails(string $email): void {
$this->expectException(ValidationException::class);
validateEmail($email);
}
public static function invalidEmails(): array {
return [["notanemail"], ["@no-local.com"], ["missing@dot"], [""]];
}
// Pest dataset (equivalent)
dataset("invalid_emails", ["notanemail", "@no-local.com", "missing@dot", ""]);
it("rejects invalid email", function (string $email) {
expect(fn() => validateEmail($email))->toThrow(ValidationException::class);
})->with("invalid_emails");
Data providers document the exact input space your code handles — great for boundary conditions.