【问题标题】:SpecFlow Re-usable step definitionsSpecFlow 可重用的步骤定义
【发布时间】:2011-07-10 19:49:21
【问题描述】:

有没有办法让 SpecFlow 重用步骤定义?

在其他工具中,我使用了 GivenWhenThen 基类,其中包含诸如

WhenAnOrderIsCreated -- 这会初始化一个受保护的订单成员以供继承类使用。

似乎无法与 SpecFlow 一起使用(似乎不喜欢继承)

有没有办法跨功能共享步骤?

非常感谢

【问题讨论】:

  • 嗨,克里斯.. 刚刚对这篇文章投了赞成票,然后发现是你!好问题:-)

标签: c# bdd specflow


【解决方案1】:

为什么是的,这是可能的 - 从 step 功能中查看调用步骤 (https://specflow.org/documentation/Calling-Steps-from-Step-Definitions/)

简而言之,您创建一个继承自 Steps 的步骤定义类,如下所示:

[Binding]
public class CallingStepsFromStepDefinitionSteps : Steps
{}

然后您可以像这样简单地调用其他步骤:

[Given(@"I am logged in")]
public void GivenIAmLoggedIn()
{
     Given("I am on the index page");
     When("I enter my unsername nad password");
     And("I click the login button");
     incStepCount();
}

我希望我正确理解了您的问题,并且这是对它的回答

【讨论】:

  • 用户应该知道,使用它会将'CurrentStep'作为方法中调用的最后一个步骤类型,而不是方法绑定到的步骤类型。这一点很重要,因为随后的任何And 步骤都将采用可能已更改的“CurrentStep”类型。在上面的示例中,在调用 Given I am logged in 之后直接执行的 And 步骤将假定下一步是 when 而不是 Given(因为方法中调用的最后一步是 Given)。
  • 最好直接调用C#方法而不是通过例如“Given(“我在索引页”);”。这样,更改步骤描述不会导致这些调用失败。
  • 我们最初以这种方式使用步骤,但是当出现问题或失败时它很难调试,因为它似乎只是跳过失败的步骤并给出一般错误消息,我们现在切换到此处描述的上下文步骤stackoverflow.com/questions/38723867/…
猜你喜欢
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多