我有一个项目,我已经在Behat中编写了功能/场景,该项目现已完成。我必须在方便使用symfony的网站上测试电子邮件功能。但是,我找不到任何可以帮助我从Behat中配置symfony的教程。大多数站点都以Symfony的形式提供Behat,而并非以其他方式提供。

这是我发现的文章,其中包含有关配置的一些信息,但并不完整。 http://extensions.behat.org/symfony2

本文http://docs.behat.org/cookbook/using_the_profiler_with_minkbundle.html提供了用于检查电子邮件功能的代码,但是没有说明如何在Behat中配置symfony。我安装了symfony扩展程序。

这是我的composer.json内容:

{
    "require": {
        "behat/behat": "*",
        "behat/mink": "1.4.0",
        "behat/mink-goutte-driver": "*",
        "behat/mink-selenium-driver": "*",
        "behat/mink-selenium2-driver": "*",
        "behat/mink-sahi-driver": "*",
        "behat/mink-zombie-driver": "*",
        "drupal/drupal-extension": "*",
        "symfony/process": "*",
        "behat/symfony2-extension": "*",
        "symfony/form": "*",
        "symfony/validator": "*",
        "behat/mink-extension": "*",
        "symfony/http-kernel": "*",
        "fabpot/goutte": "dev-master#5f7fd00"
    },
    "minimum-stability": "dev",
    "config": {
      "bin-dir": "bin/"
    }
}


有人可以在这里指导我吗?

最佳答案

在Symfony 2(.2)配置中,您必须将behat.yml文件放在根文件夹中,即composer.json所在的文件夹中。

app/
bin/
src/
vendor/
web/
behat.yml
composer.json


这是一个有效的behat.yml的示例:

default:
    # ...
    extensions:
        Behat\Symfony2Extension\Extension: ~
        Behat\MinkExtension\Extension:
            goutte:    ~
            selenium2: ~


现在,您必须启动behat init command并指定所需的捆绑包:

php bin/behat @AcmeDemoBundle --init


上面的命令将创建一个Features文件夹,其中包含一个FeatureContext类。
将此类的方法放在此类中。下面是官方的hello world示例:

/**
 * @Given /^I am in a directory "([^"]*)"$/
 */
public function iAmInADirectory($dir)
{
    if (!file_exists($dir))
        mkdir($dir);

    chdir($dir);
}

/**
 * @Given /^I have a file named "([^"]*)"$/
 */
public function iHaveAFileNamed($file)
{
    touch($file);
}

/**
 * @When /^I run "([^"]*)"$/
 */
public function iRun($command)
{
    exec($command, $output);
    $this->output = trim(implode("\n", $output));
}

/**
 * @Then /^I should get:$/
 */
public function iShouldGet(PyStringNode $string)
{
    if ((string) $string !== $this->output)
        throw new \Exception("Actual output is:\n" . $this->output);
}


现在,您必须在ls.feature文件夹中创建功能文件(来自同一示例的Features):

Feature: ls
    In order to see the directory structure
    As a UNIX user
    I need to be able to list the current directory's contents

    Scenario: List 2 files in a directory
        Given I am in a directory "test"
        And I have a file named "foo"
        And I have a file named "bar"
        When I run "ls"
        Then I should get:
            """
            bar
            foo
            """


因此,您的Features文件夹将类似于以下结构:

Acme\DemoBundle\Features
    |- Context /
       |- FeatureContext.php
    ls.feature


最后,启动behat并享受!

php bin/behat @AcmeDemoBundle

关于php - 在Behat中配置Symfony,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12725017/

10-12 06:05