如何在Specflow(BDD)中正确使用StepArgumentTransformation?

时间:2016-09-06 13:13:29

标签: c# selenium bdd specflow

我遇到了一个场景,我必须从specflow功能文件发送一个整数数组作为参数。我可以使用我不想做的表,因为我发送了row []或col []。如果我将参数作为字符串传递

例如:给定将值设置为'470,471,472,472'

并接收它并在步骤定义文件中进行拆分。 StepArgumentTransformation与上述场景有何不同?使用步骤参数转换是否有任何其他好处。我知道我们可以转换XML,日期或任何对象。为什么我们必须使用stepargumenttransformation ???

1 个答案:

答案 0 :(得分:2)

我希望我能正确理解这个问题。

Specflow支持一些开箱即用的自动转换功能,例如转换为DateDoubleint等等,默认情况下会执行这些操作,因为没有歧义他们。您可以轻松地将字符串转换为doubleDate,因为您知道正在使用的区域设置。

为什么不支持转换为数组?我想它可能是,但有一些含糊不清。列表分隔符应该是什么?逗号?那些使用它作为数字的整数部分和小数部分之间的分隔符的语言环境呢?

因此,提供将列表转换为int[]IEnumerable<int>的内容的默认实现是可能的,但它可能会让一些人问他们为什么它们不适用于他们使用☃作为列表分隔符。

最好将具体含义的内容留给个人实施,而不是猜测最佳实施。

您想要的StepArgumentTransformation非常简单,如果您想在许多项目中共享它,可以将其包含在外部步骤程序集中。

所以回答你的很多问题:

它并没有什么不同,它只是将它封装在一个地方,这是一种很好的做法,这是一种好处。

是的,你可以转换任何对象。

你不必使用StepArgumentTransformation,很多人没有,但恕我直言,他们让你的生活更轻松