This library provides common tests for PSR-11 containers configured using a subset of laminas-servicemanager configuration as specified by Mezzio
It guarantees delivery of the same basic functionality across multiple PSR-11 container implementations, and simplifies switching between them.
Currently we support:
Run the following to install this library:
$ composer require --dev laminas/laminas-container-config-test
In your library, you will need to extend the
Laminas\ContainerConfigTest\AbstractContainerTest
class within your test suite and
implement the method createContainer
:
protected function createContainer(array $config) : ContainerInterface;
It should return your PSR-11-compatible container, configured using $config
.
Then, depending on what functionality you'd like to support, you can add the following traits into your test case:
Laminas\ContainerConfigTest\AliasTestTrait
- to supportaliases
configuration,Laminas\ContainerConfigTest\DelegatorTestTrait
- to supportdelegators
configuration,Laminas\ContainerConfigTest\FactoryTestTrait
- to supportfactories
configuration,Laminas\ContainerConfigTest\InvokableTestTrait
- to supportinvokables
configuration,Laminas\ContainerConfigTest\ServiceTestTrait
- to supportservices
configuration,Laminas\ContainerConfigTest\SharedTestTrait
- to supportshared
andshared_by_default
configuration.
To provide an Mezzio-compatible container, you should extend the class
Laminas\ContainerConfigTest\AbstractMezzioContainerConfigTest
and implement the method createContainer
. This class composes the following traits:
Laminas\ContainerConfigTest\AliasTestTrait
,Laminas\ContainerConfigTest\DelegatorTestTrait
,Laminas\ContainerConfigTest\FactoryTestTrait
,Laminas\ContainerConfigTest\InvokableTestTrait
,Laminas\ContainerConfigTest\ServiceTestTrait
.
If you want also plan to support shared services, your test class should compose
the SharedTestTrait
as well:
use Laminas\ContainerConfigTest\AbstractMezzioContainerConfigTest;
use Laminas\ContainerConfigTest\SharedTestTrait;
class ContainerTest extends AbstractMezzioContainerConfigTest
{
use SharedTestTrait;
protected function createContainer(array $config) : ContainerInterface
{
// your container configuration
}
}