laminas/laminas-container-config-test

Mezzio PSR-11 container configuration tests

0.2.2 2019-12-31 16:31 UTC

This package is auto-updated.

Last update: 2020-09-11 16:04:58 UTC


README

Build Status Coverage Status

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:

Installation

Run the following to install this library:

$ composer require --dev laminas/laminas-container-config-test

Using common tests

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 support aliases configuration,
  • Laminas\ContainerConfigTest\DelegatorTestTrait - to support delegators configuration,
  • Laminas\ContainerConfigTest\FactoryTestTrait - to support factories configuration,
  • Laminas\ContainerConfigTest\InvokableTestTrait - to support invokables configuration,
  • Laminas\ContainerConfigTest\ServiceTestTrait - to support services configuration,
  • Laminas\ContainerConfigTest\SharedTestTrait - to support shared and shared_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
    }
}