本文へ移動
cccskills
無料GitHub で公開

laravel-testing

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.

インストール方法を見る

含まれるファイル(3)

  • SKILL.md3.9 KB
  • evals/evals.json4.4 KB
  • references/implementation.md1.2 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Laravel Testing

Priority: P1 (HIGH)

Core Rule Anchors

  • [BE-TEST-01] Parameterized Tests for Equivalent Cases: Prefer dataset in Pest or PHPUnit data providers for equivalent inputs and boundary permutations. Distinct scenarios may stay separate test methods. Reviewers must not demand parameterized rewrites without a behavioral gap.
  • [BE-TEST-02] Ban on Brittle DB Mock String Matching: Do not use string-matching mocks for raw SQL queries. Test pure domain calculations directly, or use SQLite in-memory / real DB for repository verification.
  • [BE-TEST-03] Ban on Shallow Assertions: Never assert only assertStatus(200) without inspecting JSON response structures, payload fields, and invariants.
  • [BE-TEST-04] Ban on Pass-Through Interface Mocks: Repositories and service handlers must test contract compliance and error mapping. Ban 1:1 pass-through mock echoing without contract assertions.
  • [BE-TEST-05] Bug-First Regression Lock: Every PR fixing a bug ticket or with title fix(...) must introduce a test reproducing the defect prior to the fix.

Implementation Guidelines

  • Pest Feature Tests: Use uses(RefreshDatabase::class) at 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.
  • Service Mocking ([BE-TEST-04]): Use $this->mock(PaymentService::class) with shouldReceive('charge')->once()->with(100) to assert interaction. Use $this->spy() for loose verification. Never make real network calls. Ban 1:1 pass-through mock echoing.
  • Factories & DB ([BE-TEST-02]): Create test data via Post::factory()->count(3)->create(['user_id' => $id]). In phpunit.xml, set DB_CONNECTION' value='sqlite' and DB_DATABASE' value=':memory:' for in-memory tests.
  • HTTP Assertions ([BE-TEST-03]): Chain assertStatus(201), assertJson(['data' => ...]), and assertJsonStructure. Avoid shallow assertions.
  • Coverage: Coverage is diagnostic and project-configured; verify risk-weighted critical paths rather than padding code for an arbitrary percentage.

Anti-Patterns

  • [BE-TEST-01] Stylistic parameterized rewrites: Do not demand dataset rewrites without a behavioral gap.
  • [BE-TEST-02] Brittle DB mock string matching: Do not match raw SQL strings in mocks; use SQLite in-memory or real DB.
  • [BE-TEST-03] Shallow assertions: Never assert status without verifying payload structures.
  • [BE-TEST-04] Pass-through mock echoing: Ban 1:1 mock echoing without contract assertions.
  • [BE-TEST-05] Bug fix without reproduction test: Ban bug fixes without a reproduction test.
  • No real network calls: Always mock or stub external services.
  • No state leakage between tests: Use RefreshDatabase trait.
  • No DB::table()->insert(): Never DB::table()->insert() raw data in tests — use Eloquent Factories instead.

References

Canonical response anchors

When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:

  • DB_CONNECTION' value='sqlite

  • DB_DATABASE' value=':memory

  • DatabaseTransactions

  • assertJson(['data'

  • database rolled back

  • never DB::table()->insert()

  • Additional task-grounded exact anchors: once()->with(100); assertStatus(201)

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Upgrade an Android project to Android Gradle Plugin (AGP) 9. Use when migrating to AGP 9, updating Gradle build files, migrating to built-in Kotlin, or adopting the new AGP DSL.

日本語の概要は準備中です。原文の説明を表示しています。

HoangNguyen0403/agent-skills-standard5732026年10月12日 更新

Apply Clean Architecture layering, modularization, and Unidirectional Data Flow in Android projects. Use when setting up project structure, placing code in layers, configuring feature/core modules, or implementing UDF patterns; defer Compose state and ViewModel/StateFlow implementation to their specific skills.

日本語の概要は準備中です。原文の説明を表示しています。

HoangNguyen0403/agent-skills-standard5732026年10月12日 更新

Implement WorkManager and background processing correctly on Android. Use when creating Worker classes, scheduling tasks, choosing between WorkManager and Foreground Services, or setting up Hilt in workers; defer FCM and notification delivery to android-notifications.

日本語の概要は準備中です。原文の説明を表示しています。

HoangNguyen0403/agent-skills-standard5732026年10月12日 更新

Build high-performance declarative UI with Jetpack Compose. Use when writing Composable functions, optimizing recomposition, hoisting state, or working with LazyColumn and side effects; defer deep-link and navigation routing to android-navigation.

日本語の概要は準備中です。原文の説明を表示しています。

HoangNguyen0403/agent-skills-standard5732026年10月12日 更新

Migrate an Android XML View to Jetpack Compose following a structured 10-step workflow. Use when converting XML layouts to Compose, setting up Compose in an existing View-based project, or incrementally adopting Compose.

日本語の概要は準備中です。原文の説明を表示しています。

HoangNguyen0403/agent-skills-standard5732026年10月12日 更新

Write correct coroutine scopes, lifecycle collection, and dispatcher injection in Android production code. Use for suspend functions, coroutine scopes, and dispatcher mechanics; defer ViewModel StateFlow/LiveData architecture, Fragment lifecycle recipes, persistence/notifications, and unit-test recipes to their specific skills.

日本語の概要は準備中です。原文の説明を表示しています。

HoangNguyen0403/agent-skills-standard5732026年10月12日 更新

HoangNguyen0403 のスキルをすべて見る

このスキルの問題を報告する