2016-07-22 4 views
0

私は、アクション内のオプションの部分を使用して、自分のフィーチャーコンテキストに関数を書き込もうとしています。Behat featurecontext再利用可能なアクションの正規表現の問題

/** 
* Function to scroll into view. 
* 
* @When /^I scroll "([^"]*)" into view(of type "([^"]*)")?$/g 
*/ 
public function iScrollIntoView($locator, $type = "id") { 
    // Some logic here. 
} 

だから、アイデアはどちらか私は私のbehatスクリプトで使用することができます:正規表現は、オンライン正規表現テスターで正常に動作するようですしながら、I scroll "foo" into viewまたはI scroll "foo" into view of type "bar"

は、だから私は、型部分はオプションになりたいです、それは私のbehatスクリプトでは動作していないようです。

And I scroll "foo" into viewを私のbehatスクリプトに入れると、その機能を認識しません。私の正規表現に何か問題がありますか?または、これは行動の問題です。

答えて

0

解決策はかなり論理的でした。振る舞いが失敗する原因となった主な問題は、正規表現のglobal => gだったので、それを削除した後、行動を認識していました。

/** 
* Function to scroll into view. 
* 
* @When /^I scroll "([^"]*)" into view(of type "([^"]*)")?/ 
*/ 

第二の問題は、グループ化は、私の関数の中で、私は私のパラメータとして第2のグループを使用していたが、これはオプション(タイプの「foo」という)のグループですし、実際にそのグループの変数ではありませんでした。だから私はそれを取得することができた関数に3番目のパラメータを追加した後。

public function iScrollIntoView($locator, $of_type_provided = FALSE, $type = "id") { 
    // Some logic here. 
} 

これは将来、他の人にとって役に立ちそうですか?