1

これは、答えを知っていれば明らかであり、知らなければ不可能であるという質問の1つのように思われます...

複数行の例の表をSpecFlow機能ファイルに含めるにはどうすればよいですか?

私の例は次のようになります。

        いくつかの無効な入力があるとすると:
        | 入力|
        | """複数行の例1
              複数の行があるため
              "" "|
        | """複数行の例2
             さらに多くの行で
             前の例より
             "" "" |
    何か面白いことが起こったとき
    次に、エラーが表示されます

前もって感謝します。

4

3 に答える 3

3

あなたはこのようにそれを行うことができます:

Given there is some invalid input:
    | <Here goes column Name> | <Column Name2..>  |
    | Line 1 for column 1     | Line 1 for column2|
    | Line 2 for column 1     | Line 2 for column2|
    | ..and so on             | and so on...      |
When something interesting happens
Then the error is shown

これは次のように翻訳されます

[Given(@"there is some invalid input:")]
public void GivenThereIsSomeInvalidInput(Table table)
{
   foreach (var row in table.Rows)
   {
       string info1= = row["<Here goes column Name>"];
       string info2= = row["<Column Name2..>"];
   }
}

無効な入力のセットがいくつかあることを理解しています。これとまったく同じように、テーブルに入力データを追加するだけで、追加のコードは必要ありません。

これがあなたの問題を解決することを願っています

于 2011-06-01T15:15:39.743 に答える
3

グーグルSpecFlowグループのポスターによると、これは不可能のようです。彼はまた、私が行動テストで実装しすぎている可能性があり、これが単体テストにより適切に適合する可能性があることを指摘しています。

于 2011-06-06T15:31:11.153 に答える
2

(SpecFlowの自動テーブル比較機能を使用せずに)実際の値と期待値の比較を自分で行うため、改行を含む文字列などの特殊な値に正規表現を使用できます。

Then I expect the result values
    | Name            | Value              |
    | Multilinestring | @@Multline\nString |

そして私の比較関数はこれを行います:

private static bool compare (string actual, string expected)
{
    if (expected.StartsWith("@@"))
        return Regex.Match(actual, expected.Substring(2)).Success;
    ....
}
于 2014-03-28T11:25:49.780 に答える