2

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/"
    }
}

誰か私をここに案内してもらえますか?

4

3 に答える 3

10

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
于 2013-08-26T13:54:24.580 に答える
1

symfony で behat を実行するために必要な依存関係は、behat、symfony2-extension、mink、およびドライバーであり、目的の出力を得るにはフォーマッターが必要になる場合があります。

次に、ドライバー、セッション、ブラウザーの behat.yml を構成し、テスト スイートに名前を付ける必要があります。

これが完了したら、機能と FeatureContext を追加して、テスト シナリオを記述し、カスタム ステップを定義する必要があります。

ここに behat+mink+selenium+symfony を使用した symfony インストールの詳細構成を追加しました。それがあなたのために働くかどうかを確認してください。

于 2017-05-09T13:30:43.290 に答える
0

あなたが達成しようとしていることを完全に理解しているかどうかはわかりませんが、Symfony2 プロジェクトの別の構成を達成しようとしているという事実は、おそらくカスタム環境を利用する必要があると思います. それを行う方法については、このクックブックの記事を参照してください。

たとえば、独自の構成ファイル ( /app/config/config_behat.yml) を持ち/app_behat.php/、behat テストからアクセスする「behat」環境をセットアップしたい場合があります。

于 2012-10-04T10:44:41.697 に答える