php-testing
A guide for unit and integration testing in PHP. Helps developers enforce quality standards across PHP projects.
Install
mkdir -p .claude/skills/php-testing && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3258" && unzip -o skill.zip -d .claude/skills/php-testing && rm skill.zipInstalls to .claude/skills/php-testing
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Write unit and integration tests for PHP applications with PHPUnit and Pest. Use when writing PHPUnit unit tests or integration tests for PHP applications.Key capabilities
- →Write unit tests with PHPUnit or Pest
- →Implement integration tests
- →Create mocks for dependencies
- →Use data providers for test cases
How it works
It provides standards for structuring tests, isolating dependencies through mocking, and using data providers to ensure repeatable test execution.
Inputs & outputs
When to use php-testing
- →Write unit tests for PHP classes
- →Set up integration test suites
- →Review PHP test coverage
About this skill
PHP Testing
Priority: P1 (HIGH)
Structure
See implementation examples for test directory layout.
Write Tests with PHPUnit and Pest
- Standards: Use
PHPUnit(9/10+) orPest. Organize intoUnit/,Integration/, andFeature/. Class names should extendTestCase. - TDD Workflow: Follow Red-Green-Refactor. Write failing test first, implement minimal logic, then refactor.
See implementation examples for PHPUnit service test with mock.
Apply Assertions and Data Providers
- Fluent Assertions: Use
assertSame(===) overassertEqualsto avoid type coercion. Also useassertCount()andassertMatchesRegularExpression(). - Data Providers: Use
#[DataProvider('statusProvider')](PHPUnit 10+) ordataset(Pest).
See implementation examples for Pest expressive syntax with datasets.
Isolate Test Dependencies
- Mocking: Use
createMock()for dependencies. NOT mock simple Data Objects. - Isolation: Ensure tests Independent and Repeatable. DB tests must use
TransactionsorSQLite :memory:. - Coverage: Aim for
80%+line coverage. Usephpunit.xmlto whitelist specific directories. - Automation: Run tests on every PR using GitHub Actions or GitLab CI.
Anti-Patterns
- No testing private methods: Test through public interfaces only.
- No over-mocking internals: Mock only external boundaries.
- No real network/DB in unit tests: Use in-memory databases or mocks.
- No coverage-metric chasing: Prioritize meaningful assertions.
References
Canonical response anchors
When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:
- Define a static method returning test cases as arrays,method
- independent
- type coercion
When not to use it
- →When testing private methods directly
- →When using real network or database connections in unit tests
Limitations
- →Requires tests to be independent and repeatable
How it compares
It enforces TDD workflows and isolation patterns that prevent common testing anti-patterns in PHP.
Compared to similar skills
php-testing side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| php-testing (this skill) | 8 | 28d | No flags | Intermediate |
| laravel-13-facades | 0 | 3mo | No flags | Intermediate |
| php-best-practices | 15 | 28d | No flags | Beginner |
| laravel-pdf | 11 | 3mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by HoangNguyen0403
View all by HoangNguyen0403 →You might also like
laravel-13-facades
kooda-ai
Use when: working with Laravel 13 facades, Illuminate\Support\Facades namespace, facades vs dependency injection, facades vs helper functions, Facade base class behavior, getFacadeAccessor(), facade testing with shouldReceive(), real-time facades, Facades\ prefixes, and Laravel 13 facade code review
php-best-practices
HoangNguyen0403
PHP best practices, PSR standards, and code quality guidelines.
laravel-pdf
spatie
Generate PDFs from Blade views or HTML using spatie/laravel-pdf. Covers creating, formatting, saving, downloading, and testing PDFs with the Browsershot, Cloudflare, or DOMPDF driver.
laravel-architecture
HoangNguyen0403
Core architectural standards for scalable Laravel applications.
php-guidelines-from-spatie
freekmurze
Describes PHP and Laravel guidelines provided by Spatie. These rules result in more maintainable, and readable code.
laravel-specialist
Jeffallan
Use when building Laravel 10+ applications requiring Eloquent ORM, API resources, or queue systems. Invoke for Laravel models, Livewire components, Sanctum authentication, Horizon queues.