Data Providers

One test, many scenarios

Data providers let you run the same test with different inputs.

Middleware Testing
// tests/Unit/Http/Middleware/AuthorizationTest.php
class AuthorizationTest extends TestCase
{
    #[Test]
    #[DataProvider('protectedRoutesProvider')]
    public function auth_middleware_is_applied(string $route): void
    {
        $response = $this->get(route($route));

        $response->assertMiddlewareIsApplied('auth');
    }

    public static function protectedRoutesProvider(): array
    {
        return [
            'dashboard' => ['dashboard.index'],
            'users list' => ['users.index'],
            'users create' => ['users.create'],
            'users edit' => ['users.edit'],
        ];
    }
}

Read more by @jcergolj: Data Providers Use Cases