2016-09-21 8 views
0

を定義しているが、私の機能ファイルは 機能です:訪問者として、私はBehatエラー - ステップは、すでにここで

@javascript @program 
    Scenario: View first page 
    When I fill in the following: 
     | username | myusername | 
     | password | mypass | 
    And press "Login" 
    Then I should see "Dashboard" 
    Then I go to "/programs/list" 

ホームページをロードすることができるはず私composer.jsonは以下の通りである:

{ 
    "require": { 
     "behat/mink-extension": "^2.2", 
     "behat/mink-goutte-driver": "^1.2", 
     "behat/mink-selenium2-driver": "^1.3" 
    } 
} 

私behat.ymlファイルとして次のとおりです。

default: 
    extensions: 
    Behat\MinkExtension: 
     base_url: http://myURL.com 
     selenium2: ~ 
     browser_name: 'chrome' 
    suites: 
     defaults: 
      contexts: 
       - FeatureContext 
       - Behat\MinkExtension\Context\MinkContext 

マイFeatureContext.phpファイル私はこの次のエラーを取得

class FeatureContext extends MinkContext implements Context, SnippetAcceptingContext 
{ 
    // 
    /** 
    * 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() 
    { 
     $this->driver = new \Behat\Mink\Driver\Selenium2Driver('chrome'); 
     $this->session = new \Behat\Mink\Session($this->driver); 
     $this->session->start(); 
    } 
    public function iAmOnHomepage($arg1) 
    { 
     $this->getSession()->visit($this->locatePath('http://myURL.com')); 
    } 
    /** 
    * @When |I fill in :arg1 with :arg2 
    */ 
    public function iFillInWith($username, $password) 
    { 
     $MinkContext = new MinkContext; 
     $MinkContext -> assertFieldContains ("username" , $username); 
     $MinkContext -> assertFieldContains ("password" , $password); 
     $this->driver->close(); 
    } 
} 

のとおりです。

FeatureContext::iAmOnHomepage() 
Behat\MinkExtension\Context\MinkContext::iAmOnHomepage() And press 
"Login" Step "/^(?:|I)am on (?:|the)homepage$/" is already defined 
in FeatureContext::iAmOnHomepage() 

答えて

0

public function iAmOnHomepage($arg1)情報何かの名前を変更し、例えば、public function IAmAtHomepage($arg1)

または注釈を入れを〜iAmOnHomepage

あなたはFeatureContextとトラフで二回MinkContextをロードしているので、あなたの場合には内部状態と状態の競合に
/** 
* @When I am on Homepage with :arg1 
*/ 

問題は今、関数名の自動解析のようですBehat\MinkExtension\Context\MinkContext::iAmOnHomepage()

1

は、このエラーを得ていますbehat.yml。

FeatureContextをMinkContextで拡張した場合、behat.ymlでMinkContextを宣言する必要はありません。
behat.ymlからBehat\MinkExtension\Context\MinkContext行を削除すると問題が解決するはずです。これは、「私はホームページをロードすることができるはずビジターとして」あなたの要件がある場合は

1

その後、あなたのシナリオでは、あなたの最初のステップとしてのステップを次を追加します。

私はホームページ

の午前考えます

FeatureContextファイルから機能iAmOnHomepage()を削除してください。これは既にMinkで標準的な機能として利用可能です。これは競合を引き起こすでしょう。または、関数の名前を変更します。

public function iFillInWith($username, $password) 
{ 
    $MinkContext = new MinkContext; 
    $MinkContext -> assertFieldContains ("username" , $username); 
    $MinkContext -> assertFieldContains ("password" , $password); 
    $this->driver->close(); 
} 

私は上記の手順が必要ないと思います。フィールドをここにアサートするだけで、フィーチャーファイル内のどこにでもこの関数を使用することはできません。

ご注意:Gherkinステートメントは、Given、WhenとThenの形式で書かれています。ここであなたのシナリオを読みやすくする必要があります。

関連する問題