Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Integration Tests Laravel Package

cache/integration-tests

Integration test suite for validating PSR-6 cache pools, taggable cache pools, and PSR-16 simple caches against PHP-FIG rules. Install as a dev dependency and extend the provided PHPUnit base tests to verify your cache implementation.

View on GitHub
Deep Wiki
Context7

PSR-6 and PSR-16 integration tests

CI Latest Stable Version Software License

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log