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
多分、他の場所でMinkContextを読み込むかもしれません。Behatのどのバージョンを使用しますか?削除したメソッドで、FeatureContextのコードスニペットをいくつか投稿してください。 – lauda
2回読み込まれているように見えますが、どこにでも2番目のコピーが見つからないので、何とか2回呼び出されるMinkContext.phpでなければなりません。 – Rebecca
あなたはbehat.ymlでMinkContextを使用しているかもしれません。削除するとうまくいくはずです。 behat.ymlにはローカルコンテキストのみが含まれている必要があります – lauda