2016-04-13 5 views
2

を見つけていない、私はまた、このフォルダ構造を持つ3.1 Behat - 複数のコンテキスト、二コンテキストクラス

default: 
    autoload: 
    #'': %paths.base%/tests/AppBundle/features/user_registration/bootstrap 
    #'': %paths.base%/tests/AppBundle/features/user_login/bootstrap 
    [ %paths.base%/tests/AppBundle/features/user_registration/bootstrap, %paths.base%/tests/AppBundle/features/user_login/bootstrap ] 
    formatters: 
     progress: ~ 
    suites: 
    app_features: 
     #paths: 
     #features: %paths.base%/tests/AppBundle/features 
     paths: [ %paths.base%//tests/AppBundle/features ] 
     contexts: 
     #- tests\AppBundle\user_registration\UserRegistrationContext 
     - UserRegistrationContext 
     - UserLoginContext 

    #suites: 
    # default: 
    #  contexts: 
    #   - FeatureContext: 
     #   session: '@session' 
    extensions: 
    Behat\Symfony2Extension: ~ 

behat.ymlなど持っています:UserRegistrationContextクラスで

enter image description here

そのOK、それはエラーは発生しません。それから、UserLoginContextを追加してもそれを見つけることができません。

composer.jsonで "behat/behat": "^ 3.1"を使用しています。

behat.ymlファイルは 'tests'ディレクトリと同じレベルにあります。

UserLoginContextは次のようになります。

<?php 

use Behat\Behat\Tester\Exception\PendingException; 
use Behat\Behat\Context\Context; 
use Behat\Behat\Context\SnippetAcceptingContext; 
use Behat\Gherkin\Node\PyStringNode; 
use Behat\Gherkin\Node\TableNode; 

use Behat\Mink\Driver\GoutteDriver; 
use Behat\Mink\Session; 


use AppBundle\Controller\UserController; 


/** 
* Defines application features from the specific context. 
*/ 
class UserLoginContext implements Context, SnippetAcceptingContext 
{ 

    private $session; 

    /** 
    * Initializes context. 
    * 
    * Every scenario gets its own context instance. 
    * You can also pass arbitrary arguments to the 
    * context constructor through behat.yml. 
    */ 
    public function __construct() 
    { 
     // Choose a Mink driver. More about it in later chapters. 
     $driver = new GoutteDriver(); 
     $this->session = new Session($driver); 
    } 

} 

なぜUserLoginContextが見つかりませんか?

更新

私は、私はこのように行うとことに気づいた - 1つの状況、そしてUserLoginContextが発見されたままに:私が見つけた一時的な解決

更新

default: 
    autoload: 
    #'': %paths.base%/tests/AppBundle/features/user_registration/bootstrap 
    '': %paths.base%/tests/AppBundle/features/user_login/bootstrap 
    #[ %paths.base%/tests/AppBundle/features/user_registration/bootstrap, %paths.base%/tests/AppBundle/features/user_login/bootstrap ] 
    formatters: 
     progress: ~ 
    suites: 
    app_features: 
     #paths: 
     #features: %paths.base%/tests/AppBundle/features 
     paths: [ %paths.base%//tests/AppBundle/features ] 
     contexts: 
     #- tests\AppBundle\user_registration\UserRegistrationContext 
     #- UserRegistrationContext 
     - UserLoginContext 

    #suites: 
    # default: 
    #  contexts: 
    #   - FeatureContext: 
     #   session: '@session' 
    extensions: 
    Behat\Symfony2Extension: ~ 

を - 作成します各コンテキストの新しいプロファイル

user_login: 
    autoload: 
    '': %paths.base%/tests/AppBundle/features/user_login/bootstrap 
    formatters: 
     progress: ~ 
    suites: 
    app_features: 
     paths: [ %paths.base%//tests/AppBundle/features ] 
     contexts: 
     - UserLoginContext 
    extensions: 
    Behat\Symfony2Extension: ~ 

をそして--profileパラメータを指定して実行します:しかし、私はそれがどうあるべきか、まだ私が行っている方法を紹介しますないその推測

sudo vendor/behat/behat/bin/behat --profile user_login 

小さな問題があるときに私がすることすべてのテストを実行したい、私は多くのコマンドを実行する必要があります。また、設定を繰り返します。まだ良い解決策を待っています。

答えて

4

ここで私は少し助けた小さなテキストに気づいた。自動ロードにbehat.ymlを使用して

http://docs.behat.org/en/v3.0/guides/6.profiles.html

のみPSR-0のためにできるようになります。またbehat用PSR-4

恥を可能にする自動ロードにあなたがすることもでき 使用composer.json、 - 彼らは本当にすべてで使用する方法を理解できないような新しいユーザーを引き起こし、これについての詳細を記述する必要がありますそれはcomposer.jsonと一緒に。私がやっていること

  • はbehatするには、この名前空間を追加しました

    namespace Tests\AppBundle\features\user_login\bootstrap;

  • フォルダ構造と同じUserLoginContextクラスの名前空間を追加しました。コンテキストの近くのyml:

# for each context class - new profile. 

default: 
    autoload: 
    '': %paths.base%/tests/AppBundle/features/user_registration/bootstrap 
    formatters: 
     progress: ~ 
    suites: 
    app_features: 
     #paths: 
     #features: %paths.base%/tests/AppBundle/features 
     paths: [ %paths.base%//tests/AppBundle/features ] 
     contexts: 

     - UserRegistrationContext 
     - Tests\AppBundle\features\user_login\bootstrap\UserLoginContext 

    #suites: 
    # default: 
    #  contexts: 
    #   - FeatureContext: 
     #   session: '@session' 
    extensions: 
    Behat\Symfony2Extension: ~ 

はまた、彼らのcomposer.jsonではない持って、これを追加する必要がある人たち:

"autoload-dev": { 
     "psr-4": { 
      "Tests\\": "tests/" 
     } 
    }, 
  • は、私はその幸運

    composer dump-autoload -o

蘭私はPSR-4の経験があります。 uldは解決策を推測し、私は思考し、実験する時間があった。

関連する問題