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.
composer require --dev cache/integration-tests:^1.0
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.
use Cache\IntegrationTests\TaggableCachePoolTest; use Cache\TagInterop\TaggableCacheItemPoolInterface; final class TagIntegrationTest extends TaggableCachePoolTest { public function createCachePool(): TaggableCacheItemPoolInterface { return new MyTaggableCachePool(); } }
use Cache\IntegrationTests\SimpleCacheTest; use Psr\SimpleCache\CacheInterface; final class SimpleCacheIntegrationTest extends SimpleCacheTest { public function createSimpleCache(): CacheInterface { return new MySimpleCache(); } }
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(); } }
Run the complete local checks before opening a pull request:
composer test
composer coverage
composer analyse
composer cs-checkReport problems on the GitHub issue tracker.