mos*_*aad 3 c# parameters bdd specflow
正如标题所说,specflow 如何处理这个问题
x = AddUp(2, 3)
x = AddUp(5, 7, 8, 2)
x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)
Run Code Online (Sandbox Code Playgroud)
我给出的链接是通常的做法。我想知道的是顶部的注释应该是什么?
[Then(@"What should I write here")]
public static void AddUp(params int[] values)
{
int sum = 0;
foreach (int value in values)
{
sum += value;
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
我不相信您可以拥有一个使用 param 数组作为specflow 中的参数类型的绑定并自动使用它。至少我从来没有使用过,也从未见过有人使用过。
您希望如何在功能文件中指定这一点?您已经给出了要调用的方法以及希望 Specflow 调用的步骤定义方法的示例,但没有给出您期望功能文件如何读取的示例。
我怀疑你会想做这样的事情
Given I want to add up the numbers 2,5,85,6,78
Run Code Online (Sandbox Code Playgroud)
最终,specflow 会将其转换为字符串并调用方法。您必须自己进行从字符串到数字数组的转换,可能使用[StepArgumentTransformation]如下所示:
[StepArgumentTransformation]
public int[] ConvertToIntArray(string argument)
{
argument.Split(",").Select(x=>Convert.ToInt32(x)).ToArray();
}
Run Code Online (Sandbox Code Playgroud)
然后您应该能够像这样定义您的步骤定义:
[Given(@"I want to add up the numbers (.*)")]
public static void AddUp(params int[] values)
{
int sum = 0;
foreach (int value in values)
{
sum += value;
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
但说实话,此时你不需要这个 params位,int[]就足够了。