1

私たちのウェブサイトのテーブルでいくつかのオブジェクトをチェックするテストがあります。テストは SpecFlow と C# で記述されています

次のようになります。

When I click proceed
Then I should see the following values
     | key       | value     |
     | tax       | 5.00      |
     | delivery  | 5.00      |
     | subtotal  | 20.00     |

「Then」ステップのコードビハインドは次のようなものです。

[StepDefinition("I should see the following values")]
public void IShouldSeeTheFollowingValues(Table table)
{
    var basketSummary = new BasketModel();

    foreach (var row in table.Rows)
    {
        switch (row["key"])
        {
            case "tax":
                basketSummary.Tax.Should().Be(row["value"]);
                break;
            case "delivery":
                basketSummary.Delivery.Should().Be(row["value"]);
                break;
            case "subtotal":
                basketSummary.Subtotal.Should().Be(row["value"]);
                break;
        }
    }
}

テスト エラーが次のように表示される場合、これに関する問題はビルド ログにあります。

When I click proceed
-> done: OrderConfirmationPageSteps.ClickProceed() (1.0s)
Then I should see the following values
  --- table step argument ---
     | key       | value     |
     | tax       | 5.00      |
     | delivery  | 5.00      |
     | subtotal  | 20.00     |
-> error: Expected value to be 5.00, but found 1.00.

上でわかるように、それが意味するオブジェクトを区別するのは難しいです...それが5.00であると予想すると言うとき、次の行に沿って何かを言うように出力を変更できる方法はありますか?

-> error: Expected value of Tax to be 5.00, but found 1.00.
4

2 に答える 2

0

次の 2 つのことを行うことができます。

  1. Be()`basketSummary.Delivery.Should().Be(row["value"], "because that's the tax value"); などの理由フレーズをメソッドに渡します。
  2. 次のように、呼び出しを でラップしAssertionScope、説明 (コンテキスト) をそのコンストラクターに渡します
于 2016-02-03T17:52:21.337 に答える