使用StepArgumentTransformation将* any * string参数转换为不同的字符串

时间:2014-02-02 19:41:49

标签: c# binding automation bdd specflow

对于我们的SpecFlow场景,我们需要在它们到达步骤方法之前拦截字符串参数,因为我们正在对这些值进行一些自定义处理。我正在尝试添加一个通用的StepArgumentTransformation属性,我假设它应该捕获任何字符串参数,但它永远不会被命中:

[Binding]
public class Transforms
{
    [StepArgumentTransformation]
    public string StringTransform(string value)
    {
        // Transform code is here...
    }
}

我唯一能想到的是,不可能只做一般字符串 - >字符串转换?

有没有人有任何想法?谢谢!

1 个答案:

答案 0 :(得分:3)

当SpecFlow是一个字符串时,它会自动转换,你无法拦截它。 来自文档:

The following conversions can be performed by SpecFlow (in the following precedence):
 - no conversion, if the argument is an instance of the parameter type (e.g. the parameter type is object or string)
 - step argument transformation
 - standard conversion

解决方法是定义一个具有单个属性的自定义类型来保存自定义字符串值:

public class CustomString
{
    public string Value {get; set;}
}

现在,您可以使用该属性将与特定正则表达式匹配的字符串转换为此自定义类。

更多信息: http://www.specflow.org/documentation/Step-Argument-Conversions/