bex/behat-test-runner

组件,用于帮助进行Behat扩展开发的自测

1.3.1 2020-04-07 15:12 UTC

README

Build Status

Behat Test Runner 实质上是一个 Behat 上下文类,提供了测试 Behat 扩展的步骤。您可以组合一个特性文件和 behat.yml 配置,然后测试运行器将启动第二个 Behat 进程来评估创建的特性文件。

安装

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

composer require --dev bex/behat-test-runner

配置

behat.yml 中包含上下文文件,如下所示

default:
  suites:
    default:
      contexts:
        - Bex\Behat\Context\TestRunnerContext

您可以为打开页面配置测试网页浏览器,如下所示(可选)

default:
  suites:
    default:
      contexts:
        - Bex\Behat\Context\TestRunnerContext:
            browserCommand: %paths.base%/bin/phantomjs --webdriver=4444

您可以为工作目录进行配置,如下所示(可选)

default:
  suites:
    default:
      contexts:
        - Bex\Behat\Context\TestRunnerContext:
            workingDirectory: path/to/your/working/dir # if not provided then a temporary working dir is autogenerated

用法

简单使用上下文文件中必要的步骤来组合您的特性。

示例

Feature: Visiting a page on the website
    In order to demonstrate how to use test runner
    As a developer
    I should open a page and verify the content of it

    Scenario: Visiting the index.html page
        Given I have the file "index.html" in document root:
            """
            <!DOCTYPE html>
            <html>
              <head>
                  <meta charset="UTF-8">
                  <title>Test page</title>
              </head>
              <body>
                  <h1>Lorem ipsum dolor amet.</h1>
              </body>
            </html>
            """
        And I have a web server running on host "localhost" and port "8080"
        And I have the feature:
            """
            Feature: Test runner demo feature
                Scenario:
                    Given I open the index page
                    Then I should see the content "Lorem ipsum" on the page
            """
        And I have the context:
            """
            <?php
            use Behat\MinkExtension\Context\RawMinkContext;
            class FeatureContext extends RawMinkContext
            {
                /**
                 * @Given I open the index page
                 */
                function firstStep()
                {
                    $this->visitPath('index.html');
                }
                /**
                 * @Then I should see the content :content on the page
                 */
                function secondStep($content)
                {
                   $this->getMink()->assertElementContains('h1', $content);
                }
            }
            """
        When I run Behat
        Then I should not see a failing test