我是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;
}
}
答案 0 :(得分:0)
问题在于你的步骤正则表达式。你有这个:
[Then(@"this ""(.*)"" is displayed")]
但是你试着这样称呼它:
Then this <errormessage> is displayed
您没有"
的一致用法。你需要:
[Then(@"this (.*) is displayed")]
或
Then this "<errormessage>" is displayed