2016-02-03 1 views
0

У меня есть тест, который проверяет несколько объектов в таблице на нашем веб-сайте. Тест написан в SpecFlow и C#Как сообщить об имени объекта с текущими утверждениями

Это выглядит примерно так:

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

Мой код позади для «Тогда» шаг что-то подобное:

[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. 

ответ

0

Вы можете сделать два вещи:

  1. Передача фразы о причине на метод Be(), например `basketSummary.Delivery.Should(). Be (row [" value "]," потому что это значение налога ");
  2. Оберните вызов в AssertionScope и передать описание (контекста) в его конструктор, как this