ECC/rules/php/testing.md

1.1 KiB

paths
**/*.php
**/phpunit.xml
**/phpunit.xml.dist
**/composer.json

PHP Testing

This file extends common/testing.md with PHP specific content.

Framework

Use PHPUnit as the default test framework. If Pest is configured in the project, prefer Pest for new tests and avoid mixing frameworks.

Coverage

vendor/bin/phpunit --coverage-text
# or
vendor/bin/pest --coverage

Prefer pcov or Xdebug in CI, and keep coverage thresholds in CI rather than as tribal knowledge.

Test Organization

  • Separate fast unit tests from framework/database integration tests.
  • Use factory/builders for fixtures instead of large hand-written arrays.
  • Keep HTTP/controller tests focused on transport and validation; move business rules into service-level tests.

Inertia

If the project uses Inertia.js, prefer assertInertia with AssertableInertia to verify component names and props instead of raw JSON assertions.

Reference

See skill: tdd-workflow for the repo-wide RED -> GREEN -> REFACTOR loop. See skill: laravel-tdd for Laravel-specific testing patterns (PHPUnit and Pest).