roave / behat-psr11extension
Behat 的 PSR-11 容器扩展
2.4.0
2024-04-09 16:49 UTC
Requires
- php: ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0
- behat/behat: ^3.14.0
- psr/container: ^1.1.2
- symfony/config: ^6.0.19
- symfony/dependency-injection: ^6.0.20
Requires (Dev)
- doctrine/coding-standard: ^12.0.0
- laminas/laminas-servicemanager: ^3.20.0
- phpunit/phpunit: ^9.6.19
- 2.5.x-dev
- 2.4.x-dev
- 2.4.0
- 2.3.x-dev
- 2.3.0
- 2.2.x-dev
- 2.2.0
- 2.1.x-dev
- 2.1.0
- 2.0.x-dev
- 2.0.0
- 1.3.x-dev
- 1.3.0
- 1.2.x-dev
- 1.2.0
- 1.1.0
- 1.0.0
- dev-renovate/symfony-dependency-injection-7.x
- dev-renovate/all-minor-patch
- dev-renovate/symfony-config-7.x
- dev-renovate/phpunit-phpunit-11.x
- dev-renovate/laminas-laminas-servicemanager-4.x
- dev-renovate/psr-container-2.x
This package is auto-updated.
Last update: 2024-09-21 08:21:25 UTC
README
允许在 Behat 上下文中从 PSR-11 兼容的容器中注入服务。
在 @ciaranmcnulty 的很多帮助下创建。
用法
首先使用 Composer 安装扩展和依赖项
$ composer require --dev roave/behat-psr11extension
首先,如果你还没有,创建一个文件,该文件将被扩展包含,并返回一个 PSR-11 兼容的容器,例如使用 Laminas\ServiceManager
<?php declare(strict_types=1); use Laminas\ServiceManager\Config; use Laminas\ServiceManager\ServiceManager; // Load configuration $config = require __DIR__ . '/config.php'; // Build container $container = new ServiceManager(); (new Config($config['dependencies']))->configureServiceManager($container); // Inject config $container->setService('config', $config); return $container;
然后在 behat.yml
中启用扩展
extensions: Roave\BehatPsrContainer\PsrContainerExtension: container: 'config/container.php'
然后,在你的 behat.yml
套件配置中启用对 psr_container
服务容器的使用(这是由扩展提供的),例如
default: suites: my_suite: services: "@psr_container"
最后,在 behat.yml
中添加您上下文所需服务的名称,例如
default: suites: my_suite: services: "@psr_container" contexts: - MyBehatTestSuite\MyContext: - "@Whatever\\Service\\Name"
您还可以使用 behat 的内置 自动装配功能,自动将依赖项注入到上下文中
default: suites: my_suite: autowire: true services: "@psr_container" contexts: - MyBehatTestSuite\MyContext
如果你出于某种原因想要使用除 psr_container
之外的其他名称作为容器(例如,与其他扩展冲突),则可以覆盖此名称
extensions: Roave\BehatPsrContainer\PsrContainerExtension: container: 'config/container.php' name: 'my_container'
仅为清晰起见(并希望易于理解),这相当于在纯 PHP 中执行此操作
<?php declare(strict_types=1); $container = require 'config/container.php'; $context = new \MyBehatTestSuite\MyContext($container->get('Whatever\Service\Name'));