我如何在SpecFlow中处理没有标头的表
本文关键字:处理 SpecFlow | 更新日期: 2023-09-27 18:10:43
从在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 . SpecFlow . table对象,它具有以下功能:
- CreateInstance:假设"Service"answers"Taxi"是标题,而它们不是。
- CreateSet:也忽略第一行并返回键/值对。
当然这里的工作是改变我的表的布局,以匹配SpecFlow的表对象的工作。但是是否有替代方法,比如Ruby中的"rows_hash"函数?谢谢!
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
,但你应该得到的想法。