web-dev-qa-db-ja.com

キュウリシナリオから文字列のリストを渡す方法

私は以下のようにうまくいくキュウリのシナリオから文字列のリストを渡す必要があります

Scenario Outline: Verify some scenario 
Given something
When user do something 
Then user should have some "<data>" 
Examples: Some example
|data|
|Test1, Test2, Test3, Test4|

ステップ定義では、Listを使用して変数の値を取得します。ただし、データ変数の値の1つにカンマ(、)が含まれている場合Tes、t4は「Tes」と「t4」を2つの異なる値と見なすため、複雑になります

 Examples: Some example
 |something|
 |Test1, Test2, Test3, Tes,t4|  

だから私が使用できるエスケープ文字はありますか、この状況を処理する他の方法があります

9
Yogiraj

簡単な方法を見つけました。以下の手順をご覧ください。

  • これが私の機能ファイルです。

    feature file

  • 以下は、機能ステップをコードにマップするための対応するコードです。

    code for the corresponding feature

  • そうそう。結果は重要です。デバッグビューを表示できます。

    result in the debug view

4
SUMIT

これはあなたのために働くはずです:

Scenario: Verify some scenario 
Given something
When user do something 
Then user should have following
| Test1 |
| Test2 |
| Test3 |
| Tes,t4| 

ステップ定義で

Then("^user should have following$")
 public void user_should_have_following(List<String> testData) throws Throwable {
 #TODO user your test data as desired
 }
1
Ranjith's

シナリオにデータを入れないでください。あなたはそれからほとんど利益を得ず、それは多くの問題を生み出します。代わりに、データに名前を付け、シナリオのThenで名前を使用します

例えば.

 Then the user should see something

シナリオにデータと例を入れることはほとんど無意味です。以下が適用されます

  1. データは、生成されるものの複製になります
  2. 日付はタイプミスになりやすい
  3. シナリオが失敗すると、コードが間違っている(間違ったデータを生成している)か、シナリオが間違っている(間違ったデータを入力した)かどうかを知ることが困難になります。
  4. 複雑なデータを正確に表現するのは本当に難しい
  5. データが正確であることを確認するのに十分なほど慎重にシナリオを読む人はいません
0
diabolist

TypeRegistryConfigurerのTransformerでは、これを行うことができます

@Override
public Object transform(String s, Type type) {
    if(StringUtils.isNotEmpty(s) && s.startsWith("[")){
        s = s.subSequence(1, s.length() - 1).toString();
        return Arrays.array(s.split(","));
    }
    return objectMapper.convertValue(s, objectMapper.constructType(type));
}
0
Mai Hữu Lợi