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.0Extend 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.