cache / integration-tests
Integration tests for PSR-6 and PSR-16 cache implementations
Requires
- php: ^8.2
- cache/tag-interop: ^2.0
- psr/cache: ^3.0
- psr/simple-cache: ^2.0 || ^3.0
Requires (Dev)
- php-cs-fixer/shim: 3.95.19
- phpstan/phpstan: 2.2.8
- phpunit/phpunit: ^11.5 || ^12.0
- symfony/cache: ^7.4 || ^8.0
This package is auto-updated.
Last update: 2026-08-20 02:20:35 UTC
README
This package tests whether cache implementations follow PSR-6 or PSR-16. It also includes suites for PHP Cache tags and hierarchical keys.
Version 1 requires PHP 8.2, PHPUnit 11.5 or 12, psr/cache 3, psr/simple-cache 2 or 3, and cache/tag-interop 2.
Installation
composer require --dev cache/integration-tests:^1.0
Testing a PSR-6 pool
Extend CachePoolTest and return a fresh pool from createCachePool():
use Cache\IntegrationTests\CachePoolTest; use Psr\Cache\CacheItemPoolInterface; final class PoolIntegrationTest extends CachePoolTest { public function createCachePool(): CacheItemPoolInterface { return new MyCachePool(); } }
Use HierarchicalCachePoolTest for pools that support hierarchical keys.
Testing tags
use Cache\IntegrationTests\TaggableCachePoolTest; use Cache\TagInterop\TaggableCacheItemPoolInterface; final class TagIntegrationTest extends TaggableCachePoolTest { public function createCachePool(): TaggableCacheItemPoolInterface { return new MyTaggableCachePool(); } }
Testing a PSR-16 cache
use Cache\IntegrationTests\SimpleCacheTest; use Psr\SimpleCache\CacheInterface; final class SimpleCacheIntegrationTest extends SimpleCacheTest { public function createSimpleCache(): CacheInterface { return new MySimpleCache(); } }
Skipping unsupported behavior
The test bases expose a typed $skippedTests map. Skip a test only when the storage backend cannot provide that behavior.
use Cache\IntegrationTests\CachePoolTest; use Psr\Cache\CacheItemPoolInterface; final class PoolWithSkippedExpirationTest extends CachePoolTest { /** @var array<string, string> */ protected array $skippedTests = [ 'testExpiration' => 'This backend does not support expiration.', ]; public function createCachePool(): CacheItemPoolInterface { return new MyCachePool(); } }
Contributing
Run the complete local checks before opening a pull request:
composer test
composer coverage
composer analyse
composer cs-check
Report problems on the GitHub issue tracker.