繁体   English   中英

覆盖SpecFlow中的步骤声明?

[英]Override a step declaration in SpecFlow?

因此,在我的工作中,我们有一个核心SpecFlow库,我们的不同团队可以将其用于自动化。 该库具有一些声明的步骤。

例如,库可能具有以下内容:

When I click the button

但是,假设我要定义自己的步骤声明,该声明使用完全相同的措词。 是否可以覆盖它?

正如@Grasshopper所写,步骤定义是全局的。
但是您可以使用Scopes覆盖它。
参见http://www.specflow.org/documentation/Scoped-Bindings/

在这种情况下,请不要忘记在每种情况下都将指定标签或原始步骤定义。

这样做将是一个非常糟糕的主意,因为使用此步骤并失败的任何方案都将很难理解和调试。

通常,在方案中使用通用库步骤也不是一个好主意。 方案不应包含通用步骤或如何完成操作的描述。 相反,它们应该包含特定于您的业务上下文的步骤,并且这些步骤应该描述正在做什么以及为什么要做。

所以代替

When I click on sign in
   And I fill in my email with ...
   ...

我们得到了更简单,更抽象的

 When I sign in

这与我们正在做的事情有关,而与我们如何做无关。

如果在同一步骤定义文件或另一个步骤定义文件中有相同的步骤(在您的情况下,当我单击按钮时)两次,则将得到DuplicateStepException。 即使您使用给定或注释。 这是因为步骤定义是全局加载的,从而导致冲突。

另外,您不能扩展包含文件的stepdefinition或hook,因为黄瓜会抛出错误,这是不可接受的。 因此,您无法通过继承覆盖行为。

您将需要一起编写一个不同的步骤,或者在可能的情况下将按钮作为参数传递给现有步骤,并在允许修改库代码的情况下输入逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM