正如标题所说,specflow 如何处理 this
x = AddUp(2, 3)
x = AddUp(5, 7, 8, 2)
x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)
我给出的链接是通常是如何完成的。 我想知道顶部的注释应该是什么?
[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;
}
最佳答案
我不相信您可以拥有一个使用参数数组作为 specflow 中的参数类型的绑定(bind)并自动使用它。至少我从未使用过,也从未见过有人使用过。
您想如何在功能文件中指定它?您已经给出了您想要调用的方法的示例以及您希望 specflow 调用的步骤定义方法,但没有给出您希望特征文件读取的方式。
我怀疑你会想做这样的事情
Given I want to add up the numbers 2,5,85,6,78
最终 specflow 会希望将其转换为字符串并调用方法。您必须自己完成从字符串到数字数组的转换,可能使用如下所示的 [StepArgumentTransformation]
:
[StepArgumentTransformation]
public int[] ConvertToIntArray(string argument)
{
argument.Split(",").Select(x=>Convert.ToInt32(x)).ToArray();
}
然后您应该能够像这样定义您的步骤定义:
[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;
}
但老实说,此时您不需要 params
位,int[]
就足够了。
关于c# - specflow如何处理多个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31789172/