Параметризация шага спецпотока с помощью ключевой строки из примера шага - PullRequest
0 голосов
/ 29 апреля 2018

Я новичок в specflow, хочу помочь со сценарием specflow, как показано ниже.

Scenario Outline: Error messages validation for maximum allowed term rule
Given a <product>  
When term exceeds the max allowed term 
Then this <errormessage> is displayed

Examples: 
| product    | errormessage                 |
| ProductA   | This is an error message 1   |
| ProductB   | This is an error message 2   |
| ProductC   | This is an error message 3   |

Для определения последнего шага "* Затем отображается это сообщение об ошибке ", я хочу повторно использовать существующий метод привязки
« Затем отображается это (.
) »

Этот существующий метод привязки принимает строку в качестве параметра (ожидаемое сообщение об ошибке) и сопоставляет ее с фактическим сообщением, выбранным из тестируемого приложения.

Но когда я использую метод как есть - он не может передать содержимое сообщения об ошибке в виде массива строк. Может ли кто-нибудь помочь мне понять, что мне нужно сделать, чтобы это работало?

Пример метода привязки ниже. Шаг Затем это отображается не в состоянии распознать эту привязку, он просит меня написать другой метод.

[Then(@"this ""(.*)"" is displayed")]
public void ThenErrorMessageIsDisplayed(string errorMessage)
{
    var msg = uServiceSupport.GetMessages(responseData);
    var found = new JObject();

    // due to multiple error and warning messages
    foreach (var elem in msg)
    {
        if (elem["message"].ToString().Contains(errorMessage))
            found = (JObject)elem;
    }

    try
    {                
        Assert.IsTrue(found.HasValues, "Check if response has warning/error message");
        Assert.AreEqual(errorMessage, found["message"].ToString(), "Check if the error message is {0}", errorMessage);
    }            
    catch (AssertionException)
    {
        Helper.LogInfo(string.Format("Response:\n {0}", JObject.Parse(responseData)));
        throw;
    }

}

1 Ответ

0 голосов
/ 09 мая 2018

Проблема в вашем шаге регулярное выражение. у вас есть это:

[Then(@"this ""(.*)"" is displayed")]

но вы пытаетесь назвать это так:

Then this <errormessage> is displayed

у вас нет последовательного использования ". вам либо нужно:

[Then(@"this (.*) is displayed")]

или

Then this "<errormessage>" is displayed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...