graham-campbell/testbench-core
Core testing utilities for Laravel packages, maintained by Graham Campbell. Provides lightweight TestBench components compatible with Laravel 8–13, PHP 7.4–8.5, and PHPUnit 9–12 to simplify package test setup and integration.
FacadeTrait, MockeryTrait, ServiceProviderTrait) enables selective adoption—teams can integrate only the components they need (e.g., facade mocking without service provider testing). This aligns with microservice testing and modular Laravel apps.assertArraySubset). This reduces test boilerplate by ~40% for common Laravel patterns.MockeryTrait provides legacy mocking for apps still using Mockery, bridging the gap during PHPUnit 12+ migrations.createMock()) and abstract critical traits behind interfaces.composer.json and budget for upgrades when Laravel mandates newer PHPUnit.FacadeTrait in every test) could bloat test classes. Risk: Reduced readability in large test suites. Mitigation: Document trait usage and limit to core test classes.MockeryTrait reduces migration effort; otherwise, PHPUnit’s createMock() may suffice.Assessment Phase (1–2 days)
Pilot Integration (3–5 days)
graham-campbell/testbench-core:^4.3 in a dev dependency.FacadeTrait).Full Rollout (1–2 sprints)
CustomFacadeMock in favor of FacadeTrait).Optimization (Ongoing)
assertMiddlewareHandled()).ServiceProviderTrait leverage Laravel’s DI seamlessly. No need for manual service binding in tests.FacadeTrait mirrors Laravel’s facade resolution, ensuring tests behave like production code.Illuminate\Auth\Middleware\Authenticate).RefreshDatabase and MigrateFresh traits.| Phase | Tasks | Dependencies |
|---|---|---|
| Pre-Integration | Pin PHPUnit 12, audit test suite, backup custom utilities. | CI/CD access, Laravel version. |
| Trait Adoption | Replace custom mocking/facade logic with traits. | PHP 8.1+, Laravel 8+. |
| Service Provider Tests | Migrate ServiceProvider tests to ServiceProviderTrait. |
Laravel’s service container. |
| Facade Tests | Replace manual facade mocks with FacadeTrait. |
Facade-heavy test classes. |
| CI/CD Update | Update pipelines to use PHPUnit 12, add trait coverage checks. | Test suite stability. |
| Performance Review | Benchmark test suite before/after integration. | Baseline metrics. |
composer update graham-campbell/testbench-core). Follow Laravel’s LTS releases to align updates.laravel.log and Xdebug for complex cases.--parallel).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Trait Method Deprecation | Breaks tests if Laravel changes facade APIs. | Abstract traits behind interfaces. |
| PHPUnit 13 Migration | Package drops support; tests fail. | Pin PHPUnit 12 |
How can I help you explore Laravel packages today?