2016-07-22 2 views
0

Ich versuche, eine Funktion in meinem Feature-Kontext mit einem optionalen Teil in der Aktion zu schreiben. Behat featurekontext wiederverwendbare Aktion Regex Problem

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

Also die Idee ist, die ich in meinem Behat Skript entweder verwenden können: I scroll "foo" into view oder I scroll "foo" into view of type "bar"

Deshalb möchte ich der Typ Teil optional sein, während die Regex in einem Online-Regex Tester zu funktionieren scheint, es scheint nicht in meinem Behat-Skript zu funktionieren.

Wenn ich And I scroll "foo" into view in meinem Behat-Skript setze, erkennt es die Funktion nicht. Stimmt etwas nicht mit meiner Regex? Oder ist das ein Problem?

Antwort

0

Nach einigem Nachdenken war die Lösung ziemlich logisch. Das Hauptproblem, das zu einem Fehlschlag führte, war der global => g in der Regex. Nach dem Entfernen erkannte er die Aktion.

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

Zweite Ausgabe wurde die Gruppierung, die ich in meiner Funktion wurde mit der zweiten Gruppe als meine Parameter, aber dies die Gruppe der optional ist (vom Typ „foo“) und war nicht wirklich die Variable dieser Gruppe . Nachdem ich der Funktion einen dritten Parameter hinzugefügt hatte, konnte ich sie abrufen.

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

Ich hoffe, das ist nützlich für jemand anderes in der Zukunft.