来自在Ruby中使用Gherkin,我想看看C#.NET上的SpecFlow是否适合我。在Ruby中,我能够处理一个表,其中包含第一列中的字段和第二列中的值,如下所示:
Then I see a summary of details in the overview page
| Service | Taxi |
| Arrival Station | Middlebourg |
| Arrival Vehicle | SAT12901 |
| Arrival Date | 27/06/2014 |
| No of Passengers | 2 |
在SpecFlow中,我可以使用具有以下功能的TechTalk.SpeclFlow.Table对象:
当然,这里的工作是更改我的表的布局以匹配SpecFlow的表对象的工作。但是有没有替代品,比如" rows_hash" Ruby中的函数?谢谢!
答案 0 :(得分:0)
似乎SpecFlow始终采用标头。您可以使用以下方式访问此标头:
table.Header
获取标题的原始访问权限。这只是一个字符串集合,因此您可以使用以下命令访问各个元素:
var firstRowFirstColumn = table.Header[0];
var firstRowSecondColumn = table.Header[1];
然后,您可以使用以下内容访问表中剩余的各行:
foreach(var row in table.Rows)
{
var first = row[0];
var second = row[1];
... use the values ...
}
获取表格中的所有其他值
如果你想要没有标题的原始访问,我会创建一个像这样的扩展方法:
public static IEnumerable<TableRow> AllRows(this Table table)
{
yield return new TableRow(table, table.Header);
foreach(var row in table.Rows)
{
yield return row;
}
}
我不知道你是否可以创建一个TableRow
(看起来应该可以从源代码中创建),你可能需要创建自己的TableRow
对象来包装specflow TableRow
但你应该明白这一点。