Laravel testing
Skill ComeOnOliver/skillshub/skills/HoangNguyen0403/agent-skills-standard/laravel-testing
Automated testing standards with Pest and PHPUnit. Use when writing Pest or PHPUnit feature/unit tests in Laravel applications. (triggers: tests/**/*.php, phpunit.xml, feature, unit, mock, factory, sqlite)From its SKILL.md
npx -y skills add ComeOnOliver/skillshub --skill laravel-testingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
2.2 KB, 499 tokens by cl100k_base, as published. Nobody here has run it
Laravel Testing
Priority: P1 (HIGH)
Structure
tests/
├── Feature/ # Integration/HTTP tests
├── Unit/ # Isolated logic tests
└── TestCase.php
Implementation Guidelines
Pest & Modern Testing
- Feature Tests: Use
uses(RefreshDatabase::class)at the top of Pest files. Example:it('creates post', fn() => $this->postJson('/api/posts', [...])verifies database rolled back after each test. - Transactions: For faster but non-truncating isolation, use
DatabaseTransactions.
Mocking & External Services
- Service Mocking: Use
$this->mock(PaymentService::class)withshouldReceive('charge')->once()->with(100)to assert interaction. - Loose Verification: Use
$this->spy()for behavior validation without strict ordering. - Network Safety: Never make real network calls in automated tests.
Test Data & Infrastructure
- Factories: Create test data via
Post::factory()->count(3)->create(['user_id' => $id]). - Definition: Implement
definition(): arrayusingfake()in factory classes. - Generation: Run
php artisan make:factory PostFactory --model=Post. - SQLite Support: In
phpunit.xml, setDB_CONNECTION' value='sqlite'andDB_DATABASE' value=':memory:'for in-memory, lightning-fast tests.
HTTP Assertions
- Fluent Assertions: Chain
assertStatus(201),assertJson(['data' => ...]), andassertJsonStructure. - Header Verification: Use
assertHeader('Content-Type', 'application/json').
Anti-Patterns
- No real network calls: Always mock or stub external services.
- No state leakage between tests: Use
RefreshDatabasetrait. - No
DB::table()->insert(): Never DB::table()->insert() raw data in tests — use Eloquent Factories instead. - No heavy computations in unit tests: Move to Feature layer.
References
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.