SpecFlow要素文件中的多个多行示例
本文关键字:文件 SpecFlow | 更新日期: 2023-09-27 17:58:08
这似乎是一个问题,如果你知道答案,这是显而易见的,如果你不知道,这是不可能的。。。
如何在SpecFlow要素文件中包含多行示例表?
我的例子是:
假设存在一些无效输入:|输入||""多行示例1因为有多条线路""||""多行示例2有更多的线条比前面的例子""|当有趣的事情发生时然后显示错误
提前谢谢。
您可以这样做:
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..>"];
}
}
我知道你有几组无效的输入,你可以制作另一个场景,就像这样,只在表中添加更多的输入数据,不需要额外的代码。
希望这能解决您的问题
根据谷歌SpecFlow小组的海报,这似乎是不可能的。他还指出,我的行为测试中可能有太多的实现,也许这更适合单元测试。
因为我自己比较实际值和期望值(不使用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;
....
}