yoanm/behat-utils-extension

该软件包已被废弃且不再维护。未建议替代软件包。

Behat3 的一组实用工具

0.7.0 2017-01-22 08:49 UTC

This package is auto-updated.

Last update: 2022-02-23 02:12:05 UTC


README

Scrutinizer Build Status Scrutinizer Code Quality Code Coverage

Travis Build Status PHP Versions

Latest Stable Version

BehatUtilsExtension 为 Behat 3.0+ 提供了一组实用工具。

安装

composer require --dev yoanm/behat-utils-extension

如何使用

BehatUtilsExtension 需要 behat/behatmonolog/monolog

配置

在您的 behat 配置文件中添加以下内容(通常是 behat.yml

default:
    extensions:
        Yoanm\BehatUtilsExtension: ~

包含内容

日志记录器

LoggerAwareInterface

实现此接口,您的上下文将注入日志记录器

示例

<?php
namespace Functional\Yoanm\BehatUtilsExtension\Context;

use Behat\Behat\Context\Context;
use Psr\Log\LoggerInterface;
use Yoanm\BehatUtilsExtension\Context\LoggerAwareInterface;

class FeatureContext implements Context, LoggerAwareInterface
{
    /** @var LoggerInterface */
    private $logger;

    /**
     * {@inheritdoc}
     */
    public function setBehatLogger(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }

    /**
     * @When my step
     */
    public function myStep()
    {
        $this->logger->info('Executing my step');
    }
}

Behat 事件订阅

BehatContextSubscriberInterface

启用初始化器并实现 BehatContextSubscriberInterface,然后您的上下文将被 Behat 分发器传递以接收 Behat 事件

启用上下文初始化器

default:
    extensions:
        Yoanm\BehatUtilsExtension:
            event_subscriber: true

示例

<?php
namespace Functional\Yoanm\BehatUtilsExtension\Context;

use Behat\Behat\Context\Context;
use Behat\Behat\EventDispatcher\Event\ExampleTested;
use Behat\Behat\EventDispatcher\Event\GherkinNodeTested;
use Behat\Behat\EventDispatcher\Event\ScenarioTested;
use Yoanm\BehatUtilsExtension\Context\BehatContextSubscriberInterface;

class FeatureContext implements Context, BehatContextSubscriberInterface
{
    /**
     * @param GherkinNodeTested $event
     */
    public function reset(GherkinNodeTested $event)
    {
        /**
         * Reset here your data before a scenario or example is started
         */
    }

    /**
     * {@inheritdoc}
     */
    public static function getSubscribedEvents()
    {
        return [
            ScenarioTested::BEFORE => ['reset'],
            ExampleTested::BEFORE => ['reset'],
            //Or
            // ScenarioTested::BEFORE => ['reset', ListenerPriority::HIGH_PRIORITY],
        ];
    }
}

步骤日志记录器

BehatStepLoggerSubscriber

如果启用,将记录每个 Behat 功能/背景/大纲/示例/步骤的开始和结束。如果您在功能中遇到难以理解的错误,这有助于理解幕后发生了什么。

可以与 日志记录器 结合使用,以便轻松识别上下文自定义步骤中的问题。

启用步骤监听器

default:
    extensions:
        Yoanm\BehatUtilsExtension:
            step_logger: true

输出示例

以下内容将附加到配置的日志文件中(见下面的 默认配置参考)。

behatUtils.DEBUG: [BehatStepLoggerSubscriber] [FEATURE][IN] {"title":"FEATURE TITLE","file":"FEATURE FILE PATH"} []
behatUtils.DEBUG: [BehatStepLoggerSubscriber] [FEATURE][OUT] {"title":"FEATURE TITLE","file":"FEATURE FILE PATH"} []

behatUtils.DEBUG: [BehatStepLoggerSubscriber] [BACKGROUND][IN] {"title":"BACKGROUND TITLE","line":"BACKGROUND START LINE"} []
behatUtils.DEBUG: [BehatStepLoggerSubscriber] [BACKGROUND][OUT] {"title":"BACKGROUND TITLE","line":"BACKGROUND END LINE"} []

behatUtils.DEBUG: [BehatStepLoggerSubscriber] [OUTLINE][IN] {"title":"OUTLINE TITLE","line": "OUTLINE START LINE"} []
behatUtils.DEBUG: [BehatStepLoggerSubscriber] [OUTLINE][OUT] {"title":"OUTLINE TITLE","line": "OUTLINE END LINE"} []

behatUtils.DEBUG: [BehatStepLoggerSubscriber] [EXAMPLE][IN] {"tokens":{"EXAMPLE_TOKENS_NAME":"EXAMPLE_TOKENS_VALUE"},"title":"| EXAMPLE_TOKENS_VALUE|","line":"EXAMPLE START LINE"} []
behatUtils.DEBUG: [BehatStepLoggerSubscriber] [EXAMPLE][OUT] {"tokens":{"EXAMPLE_TOKENS_NAME":"EXAMPLE_TOKENS_VALUE"},"title":"| EXAMPLE_TOKENS_VALUE|","line":"EXAMPLE END LINE"} []

behatUtils.DEBUG: [BehatStepLoggerSubscriber] [STEP][IN] {"text":"STEP TEXT","line":"STEP LINE"} []
behatUtils.DEBUG: [BehatStepLoggerSubscriber] [STEP][OUT] {"text":"STEP TEXT","line":"STEP LINE"} []

配置参考

default:
    extensions:
        Yoanm\BehatUtilsExtension:
            logger:
                path: behat.log
                level: INFO
            event_subscriber: false
            step_logger: false

测试

本存储库遵循一个自定义测试策略

贡献

参见贡献指南