我在功能文件中有以下步骤
When I add employee with vendor 'vendorname'
And I add employee with vendor 'vendorname' and client 'clientname'
我希望在单步定义中执行这两个步骤,其中客户端名称可以是可选的。 我可以使用两步定义来实现这一点,但它会复制代码。
答案 0 :(得分:0)
所以你想写这样的东西
When I add an employee with the following information
| vendor | client |
| vendorname | clientname |
这将使用Table参数生成步骤定义。
您可以自己旋转表或使用表CreateInstance,CreateInstance<>,CreateSet,CreateSet<>表的帮助函数将表映射到测试中的对象。
答案 1 :(得分:0)
SpecFlow不支持可选参数 你需要单独的步骤。
答案 2 :(得分:0)
嗯,我想你可以做一些事情,这取决于你想要达到的目标或者你希望代码的样子。现在我想到了一件事。
例如,而不是:
When I add employee with vendor 'vendorname'
And I add employee with vendor 'vendorname' and client 'clientname'
你可以写下:
When I add employee with vendor 'vendorname' and client 'clientname'
或者,应用与Fran提出的相同:
When I add an employee with the following information
| vendor | client |
| vendorname | clientname |
然后,当您在.feature文件中的步骤中设置输入参数时,您可以选择要在步骤定义文件中查询的任何预定义字符串或值(使用if或switch语句)。
答案 3 :(得分:0)
在行尾只能有一个可选参数。使用非捕获组
[When(@"I add employee with vendor '(.*)'(?: and client '(.*))'")]
public void IAddEmptoyee(string vendorName, string clientName = null)
{
}