Ich konvertierte einen SpecFlow-Schritt, um von StepArgumentTransformation
abhängig zu sein, so dass ich nicht mit mehreren primitiven Parametern arbeiten müsste, sondern einen einzelnen komplexen Parameter verwenden könnte, der mit einer Transformationsmethode erstellt wurde.Wie kann ich überflüssige Parameter aus der Schrittmethode SpecFlow entfernen, wenn die Transformation für Schrittargumente verwendet wird?
Aber ich habe gelernt, dass ich die primitiven Parameter aus dem Schritt nicht entfernen konnte, da dies zu einer "parameter count mismatch" Ausnahme führen würde.
[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;
}
Wie kann ich die x
und y
Parameter im Schritt-Methode loszuwerden?
Cool, danke! Tatsächlich werden die Klammern von SpecFlow verwendet und das Herumspielen mit ihnen scheint den Trick gemacht zu haben: '(etwas \ d \ d)' wird als Abbildung auf ein einzelnes Argument interpretiert (beachten Sie nur ein Paar Klammern), und SpecFlow verwendet die Transformation um den Wert für dieses Argument anzugeben. –