3

同様の質問 @ Gherkin が Behat および入力検証シナリオにあります

しかし、同じではありません。

私の問題は、シナリオのアウトラインの例または配列を作成する必要があることです

Given I have a problem with data
   | in  | this    | array      |
   | how | can     | I          |
   | add | special | characters | 

ほとんどの特殊文字は問題ありませんが、引用符とパイプについてはどうですか?

special characters example: \|!"#$%&/()=?«»'{}[]'`^~*+ºª-_.:,;<>@ł€¶ŧ←↓→øþĸħŋđðßæ|«»¢“”nµ

ありがとう

4

4 に答える 4

3

これが投稿されてから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)

まったく同じ実装が呼び出されます。

誰かがそれを必要とする場合に備えて、このページを読んだ後、私はこの解決策を思いつきました。

于 2015-01-30T22:00:48.647 に答える
0

エスケープするバックスラッシュ「\」が必要な問題が見つかりました

これを試してみましたが、使用しているエディターでは想定していなかったため、検証のために機能テストを行う必要があり、\" または \| を使用すると期待どおりに機能しました。

于 2013-09-12T07:29:20.120 に答える