これが投稿されてから1年が経過したことは知っていますが、今日も同様の問題があり、解決策をここに投稿しました.
Google グループの投稿が削除された場合に備えて、ここにコピーしています。
問題
私の .feature ファイルは次のようなものです:
Then I get a response with "error" equals to "<error>"
And I get a response with "error" equals to "<error_message>"
Examples:
|error | error_message |
|NotFoundHttpException | Something with quotes "More text here" |
ご覧のとおり、テキストに引用符を含む列と含まない列の 1 つをチェックするために、まったく同じ手順を呼び出しています。
Behat テストを実行すると、"More text here" が別のパラメーターとして取得され、Behat が別のスニペットを提案しています。
ソリューション
これを修正するには、" とは異なる別の文字を使用して、変数が存在することを Behat に伝える必要があります。私の場合は一重引用符を使用しました。
したがって、次のように .feature を変更しました。
Then I get a response with "error" equals to "<error>"
And I get a response with "error_message" equals to '<error_message>' escaping quotes
Examples:
|error | error_message |
|NotFoundHttpException | Something with quotes "More text here" |
次に、php テストの実装を次のように更新しました。
/**
* @Then I get a response with :attibute equals to :value
* @Then /^I get a response with "([^"]+)" equals to '([^']+)' escaping quotes$/
*/
public function iGetAResponseWithEqualsTo($attibute, $value)
まったく同じ実装が呼び出されます。
誰かがそれを必要とする場合に備えて、このページを読んだ後、私はこの解決策を思いつきました。