# PHP Test

> Generate PHPUnit and Pest tests for PHP/Laravel classes

- Skill: `erp-core-dev/php-test` (Agent Skill)
- Install (CLI): `npx skillmds@latest add erp-core-dev/php-test`
- Raw SKILL.md: https://api.skillmd.com/api/skills/erp-core-dev/php-test/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ERP-CORE-DEV (https://skillmd.com/u/erp-core-dev)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/erp-core-dev/php-test

---


# Generate PHP Tests

Generate PHPUnit or Pest tests for the given PHP/Laravel class or file.

## What To Do

1. **Read the target file** to understand public methods, dependencies, and validation rules
2. **Generate test class** in the correct tests/ subdirectory
3. **Create factory or test data** using Laravel factories
4. **Write test methods** following Arrange-Act-Assert
5. **Cover edge cases**: null values, empty inputs, boundary values, unauthorized access

## Test Types

### Unit Test (default)
- Extend TestCase (not Laravel TestCase — no framework boot)
- Use PHPUnit MockObject or Mockery for dependencies
- No database, no HTTP

### Feature Test (--type=feature)
- Extend Laravel's TestCase with RefreshDatabase
- Test service class behavior with real database via factories

### HTTP Test (--type=http)
- actingAs($user) for authenticated requests
- getJson(), postJson(), putJson(), deleteJson()
- assertStatus, assertJson, assertDatabaseHas

### Database Test (--type=database)
- Test Eloquent scopes, relations, and query results
- assertDatabaseHas / assertDatabaseMissing

## Arguments
- `<class-or-file>`: Target class name or file path
- `--type=<unit|feature|http|database>`: Test type (default: unit)
- `--pest`: Generate Pest syntax instead of PHPUnit

