bex / behat-extension-driver-locator
behat 扩展的驱动定位工具
2.0.1
2020-04-07 10:03 UTC
Requires
- php: >=5.4
- behat/behat: ^3.0.0
- symfony/config: ^4.0|^5.0
Requires (Dev)
- phpspec/phpspec: 2.4.0-alpha2
README
Behat-ExtensionDriverLocator 帮助您动态加载外部驱动/服务(如图像上传器、输出格式化程序等)。通过给定的 driverkey,驱动定位器可以在预配置的命名空间中为您找到服务。
- 它会验证类是否实现了 DriverInterface 或您的特定接口。
- 它将调用驱动程序的配置方法以获取特定配置的配置树。
- 它将验证加载的配置与提供的配置树是否匹配。
- 它将传递有效的配置和 DI 容器到驱动程序的加载方法中,以获取正确加载的服务。此包还提供了一个 Driver Node Builder,可以为您创建 behat 扩展的驱动程序节点。(请参见以下使用说明)
安装
通过将以下内容添加到您的 composer.json
中进行安装
composer require --dev bex/behat-extension-driver-locator
使用方法
-
在您的 behat 扩展的配置方法中使用 Driver Node Builder 来构建驱动配置节点
$driverNodeBuilder = DriverNodeBuilder::getInstance($driverNamespace, $driverParent); $driverNodeBuilder->buildDriverNodes($builder, $activeDriversNodeName, $driversCofigurationNodeName, $defaultDriverKeys);
其中
$driverNamespace
是 DriverNodeBuilder 在验证给定的 driverkey 时应查找驱动的命名空间,例如:My\\Awesome\\BehatExtension\\Driver
$driverParent
是所有驱动程序应实现的父类/接口,例如:My\\Awesome\\BehatExtension\\Driver\\MyAwesomeDriverInterface
(注意,所有驱动程序都需要实现Bex\Behat\ExtensionDriverLocator\DriverInterface
)$builder
是一个Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition
实例,您可以在 behat 扩展的配置方法中作为参数获得,DriverNodeBuilder 将将驱动节点添加到该构建器。$activeDriversNodeName
是用户可以指定应为您扩展使用的驱动程序的节点名称,例如:active_my_awesome_drivers
driversCofigurationNodeName
是驱动节点名称,所有驱动的附加配置都将位于此节点下,例如:my_awesome_drivers
$defaultDriverKeys
是在 behat.yml 中配置为空时将使用的默认驱动程序的 driverkey,例如:first_awesomeness
- 注意:driverkey 总是驱动程序类名的小写和下划线版本。例如:FirstAwesomeness -> first_awesomeness,例如:First -> first
使用示例配置,有效的配置可能如下所示
default: extensions: My\\Awesome\\BehatExtension: ~
或
default: extensions: My\\Awesome\\BehatExtension: active_my_awesome_drivers: first_awesomeness my_awesome_drivers: first_awesomeness: # ... all driver specific configuration goes here ...
-
在您的 behat 扩展的加载方法中使用驱动定位器来加载活动驱动程序:注意,它将自动验证驱动程序特定配置。
$driverLocator = DriverLocator::getInstance($driverNamespace, $driverParent); $drivers = $driverLocator->findDrivers($container, $activeDrivers, $driverConfigs);
其中
$driverNamespace
是 DriverLocator 应查找驱动的命名空间,例如:My\\Awesome\\BehatExtension\\Driver
$driverParent
是所有驱动程序应实现的父类/接口,例如:My\\Awesome\\BehatExtension\\Driver\\MyAwesomeDriverInterface
$container
是一个Symfony\Component\DependencyInjection\ContainerBuilder
实例,您可以在 behat 扩展的加载方法中作为参数获得,DriverLocator 将将此容器传递给每个驱动程序的加载方法$activeDrivers
是从 $config 参数中获得的激活图像驱动程序,例如:$config['active_my_awesome_drivers']$driverConfigs
是从 $config 参数中获得的驱动程序特定配置值,例如:$config['my_awesome_drivers']