bex/behat-extension-driver-locator

behat 扩展的驱动定位工具

2.0.1 2020-04-07 10:03 UTC

This package is auto-updated.

Last update: 2024-09-07 19:32:31 UTC


README

Scrutinizer Code Quality Build Status Build Status

Behat-ExtensionDriverLocator 帮助您动态加载外部驱动/服务(如图像上传器、输出格式化程序等)。通过给定的 driverkey,驱动定位器可以在预配置的命名空间中为您找到服务。

  • 它会验证类是否实现了 DriverInterface 或您的特定接口。
  • 它将调用驱动程序的配置方法以获取特定配置的配置树。
  • 它将验证加载的配置与提供的配置树是否匹配。
  • 它将传递有效的配置和 DI 容器到驱动程序的加载方法中,以获取正确加载的服务。此包还提供了一个 Driver Node Builder,可以为您创建 behat 扩展的驱动程序节点。(请参见以下使用说明)

安装

通过将以下内容添加到您的 composer.json 中进行安装

composer require --dev bex/behat-extension-driver-locator

使用方法

  1. 在您的 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 ...
  2. 在您的 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']