2016-06-30 2 views
1

BehatとMinkを初めて使用していて、MinkContextでFeatureContextを拡張しようとしています。 MinkContextで定義されている最初の関数もFeatureContextで定義されています(そうではありません)。エラーメッセージは以下の通りである:私はクラスから最初の機能を削除した場合MinkContextでBehat FeatureContextを拡張しようとすると、「ステップが既に定義されています」というエラーが発生する

Step "/^(?:|I)am on (?:|the)homepage$/" 
is already defined in FeatureContext::iAmOnHomepage() 

、すべてのステップは、同じエラーをスローし、今ではMinkContextクラスの第二の機能を指す:

Step "/^(?:|I)am on "(?P<page>[^"]+)"$/" 
is already defined in FeatureContext::visit() 

FeatureContextをRawMinkContextで拡張しても問題ありません。

この原因は何ですか?

---- EDIT(追加情報)------------

私はこれが私の全体の現在のFeatureContext.phpある3

Behat使っていて、私はまだエラーが発生しています。私は私のBehatがインストール含むフォルダ全体を検索し、私はこれは私のbehat.ymlファイルです

<?php 

use Behat\Behat\Context\Context; 
use Behat\Behat\Context\SnippetAcceptingContext; 
use Behat\Gherkin\Node\PyStringNode; 
use Behat\Gherkin\Node\TableNode; 
use Behat\MinkExtension\Context\MinkContext; 

/** 
* Defines application features from the specific context. 
*/ 
class FeatureContext extends MinkContext implements 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() 
    { 
     date_default_timezone_set("US/Eastern"); 
    } 



} 

の1つのインスタンスを見つけることができる:これはMinkContext.phpの頂上部である

# behat.yml 
default: 
    extensions: 
     Behat\MinkExtension: 
      goutte: ~ 
      selenium2: ~ 
      base_url: https://harvest.cals.ncsu.edu/ 
    suites: 
     default: 
      contexts: 
      - FeatureContext 
      - Behat\MinkExtension\Context\MinkContext 

: 名前空間Behat \ MinkExtension \ Context;

use Behat\Behat\Context\TranslatableContext; 
use Behat\Gherkin\Node\TableNode; 

/** 
* Mink context for Behat BDD tool. 
* Provides Mink integration and base step definitions. 
* 
* @author Konstantin Kudryashov <[email protected]> 
*/ 
class MinkContext extends RawMinkContext implements TranslatableContext 
{ 
    /** 
    * Opens homepage 
    * Example: Given I am on "/" 
    * Example: When I go to "/" 
    * Example: And I go to "/" 
    * 
    * @Given /^(?:|I)am on (?:|the)homepage$/ 
    * @When /^(?:|I)go to (?:|the)homepage$/ 
    */ 
    public function iAmOnHomepage() 
    { 
     $this->visitPath('/'); 
    } 
... 

--- EDIT 2:ワーキングバージョン------------

FeatureContext.php:(今セレンタグと

<?php 

    use Behat\Behat\Context\Context; 
    use Behat\Behat\Context\SnippetAcceptingContext; 
    use Behat\Gherkin\Node\PyStringNode; 
    use Behat\Gherkin\Node\TableNode; 
    use Behat\MinkExtension\Context\MinkContext; 
    use Behat\Mink\WebAssert; 

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

behat.yml FeatureContextにしてbehat.yml に削除した場合:)enable Chrome

# behat.yml 
default: 
    extensions: 
     Behat\MinkExtension: 
      goutte: ~ 
      selenium2: 
       wd_host: "http://127.0.0.1:4444/wd/hub" 
       # chrome 
       capabilities: { "browserName": "chrome", "browser": "chrome", "version": "25", 'chrome': {'switches':['--no-sandbox']}} 
      base_url: https://harvest.cals.ncsu.edu/ 
      browser_name: chrome 
    suites: 
     default: 
      contexts: 
      - FeatureContext 
+0

多分、他の場所でMinkContextを読み込むかもしれません。Behatのどのバージョンを使用しますか?削除したメソッドで、FeatureContextのコードスニペットをいくつか投稿してください。 – lauda

+0

2回読み込まれているように見えますが、どこにでも2番目のコピーが見つからないので、何とか2回呼び出されるMinkContext.phpでなければなりません。 – Rebecca

+0

あなたはbehat.ymlでMinkContextを使用しているかもしれません。削除するとうまくいくはずです。 behat.ymlにはローカルコンテキストのみが含まれている必要があります – lauda

答えて

0

はMinkContextが二回ロードされているようですMinkContexはbehat.ymlから動作するはずです。

関連する問題