skills/laravel/laravel-testing/SKILL.md
Write Pest feature tests with RefreshDatabase, mock external services, and create test data with Eloquent Factories in Laravel. Use when adding HTTP tests, configuring SQLite in-memory test database, or mocking payment services.
npx skillsauth add hoangnguyen0403/agent-skills-standard laravel-testingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
php artisan make:factory PostFactory --model=Post.RefreshDatabase for isolation.$this->mock(Service::class) for third-party calls.assertStatus(), assertJson(), assertJsonStructure().DB_CONNECTION=sqlite and DB_DATABASE=:memory: in phpunit.xml.See implementation examples for Pest feature tests and test directory structure.
uses(RefreshDatabase::class) at top of Pest files. Example: it('creates post', fn() => $this->postJson('/api/posts', [...]) verifies database rolled back after each test.DatabaseTransactions.$this->mock(PaymentService::class) with shouldReceive('charge')->once()->with(100) to assert interaction.$this->spy() for behavior validation without strict ordering.Post::factory()->count(3)->create(['user_id' => $id]).definition(): array using fake() in factory classes.php artisan make:factory PostFactory --model=Post.phpunit.xml, set DB_CONNECTION' value='sqlite' and DB_DATABASE' value=':memory:' for in-memory, lightning-fast tests.assertStatus(201), assertJson(['data' => ...]), and assertJsonStructure.assertHeader('Content-Type', 'application/json').RefreshDatabase trait.DB::table()->insert(): Never DB::table()->insert() raw data in tests — use Eloquent Factories instead.testing
Infer the requesting operator's technical fluency from message content (never ask directly) and adapt register — business, hybrid, or technical — across SDLC workflow output. Use when starting sdlc, brainstorm-feature, plan-feature, verify-work, publish-notes, or session-report, or whenever a request's phrasing signals a non-technical or cross-stack operator.
documentation
Define transaction boundaries, locking, and consistency guarantees for multi-step writes. Use when designing atomic operations, retries, idempotency, or concurrent write behavior.
development
Design relational or document schemas from access patterns, cardinality, and lifecycle. Use when modeling entities, choosing embed vs normalize, or shaping schema boundaries before implementation.
data-ai
Diagnose database latency with explain plans, index ownership, and query-shape review. Use when a query is slow, an index is missing, or scans and N+1 patterns appear.