Laravel Testing
SKILL.md
Laravel Testing
Priority: P1 (HIGH)
Structure
tests/
├── Feature/ # Integration/HTTP tests
├── Unit/ # Isolated logic tests
└── TestCase.php
Implementation Guidelines
- Framework: Use Pest for modern DX or PHPUnit for legacy parity.
- Fresh Context: Use
RefreshDatabasetrait for data isolation. - Factories: Create test data via Eloquent Factories.
- Mockery: Use
$this->mock()for external service substitution. - In-Memory: Use SQLite
:memory:for high-speed unit tests. - HTTP Assertions: Use
$response->assertStatus()andassertJson().
Anti-Patterns
- Real APIs: No real network calls: Always mock or stub.
- Global State: No state leakage: Refresh DB between tests.
- Manual Insert: No DB::table()->insert(): Use Factories.
- Slow Logic: No heavy unit tests: Move to Feature tests.