使用步进参数转换时,如何从 SpecFlow 步进方法中删除多余的参数?
How can I remove superfluous parameters from SpecFlow step method when using step argument transformation?
我将 SpecFlow 步骤转换为依赖于 StepArgumentTransformation
,这样我就不必处理多个原始参数,但可以使用通过转换方法构建的单个复杂参数。
但我了解到我无法从步骤中删除原始参数,因为那样会导致 "parameter count mismatch" 异常。
[Given("(something (\d) (\d))")]
public void Step(Something something)
{
// Does not work (parameter count mismatch)
}
[Given("(something (\d) (\d))")]
public void Step(Something something, int x, int y)
{
// Works, but is slightly confusing due to unused parameters
}
[StepArgumentTransformation("something (\d) (\d)")]
public Something Transform(int x, int y)
{
var something = new Something(x, y);
return something;
}
如何去掉step方法中的x
和y
参数?
您必须调整绑定的正则表达式。
这是一个具体的例子:
[Given("the coordinates are '(.*)'")]
public void Step(Something something)
{
// Does not work (parameter count mismatch)
}
[StepArgumentTransformation("X:(\d)/Y:(\d)")]
public Something Transform(int x, int y)
{
var something = new Something(x, y);
return something;
}
Usage:
Scenario: coordinate system
Given the coordinates are 'X:1/Y:2'
步骤参数转换的文档在这里:http://specflow.org/documentation/Step-Argument-Conversions/
我将 SpecFlow 步骤转换为依赖于 StepArgumentTransformation
,这样我就不必处理多个原始参数,但可以使用通过转换方法构建的单个复杂参数。
但我了解到我无法从步骤中删除原始参数,因为那样会导致 "parameter count mismatch" 异常。
[Given("(something (\d) (\d))")]
public void Step(Something something)
{
// Does not work (parameter count mismatch)
}
[Given("(something (\d) (\d))")]
public void Step(Something something, int x, int y)
{
// Works, but is slightly confusing due to unused parameters
}
[StepArgumentTransformation("something (\d) (\d)")]
public Something Transform(int x, int y)
{
var something = new Something(x, y);
return something;
}
如何去掉step方法中的x
和y
参数?
您必须调整绑定的正则表达式。
这是一个具体的例子:
[Given("the coordinates are '(.*)'")]
public void Step(Something something)
{
// Does not work (parameter count mismatch)
}
[StepArgumentTransformation("X:(\d)/Y:(\d)")]
public Something Transform(int x, int y)
{
var something = new Something(x, y);
return something;
}
Usage:
Scenario: coordinate system
Given the coordinates are 'X:1/Y:2'
步骤参数转换的文档在这里:http://specflow.org/documentation/Step-Argument-Conversions/