重用SpecFlow场景

Ill*_*ati 5 .net bdd specflow

我已经开始使用SpecFlow并且想知道可以在规范之间重用场景

基本上我的想法是这个(我可能从根本上错了:))

我有一个功能,用于验证导航.

功能:导航

I should be able to navigate to all the pages i'm authorized to
Run Code Online (Sandbox Code Playgroud)

场景:导航到Boo

Given I enter proper values in Foo
When I enter Go
Then I should be taken to Boo**
Run Code Online (Sandbox Code Playgroud)

然后我有另一个规范来验证Boo的操作方面

功能:验证Boo是否正常工作

所以在这里我基本上需要首先导航到Boo屏幕.我在想是否可以重用Scenario:导航到Navigation编写的Boo场景

这可能吗?另外,最好的解决方法是什么?

/ BB

Jas*_*ans 5

你有两个选择:

  1. 创建一个具有共享步骤的类,这是许多场景共有的.在您的情况下,此类将包含"当我导航到Boo"时的步骤.然后,这将适用于其他功能.

  2. 您可以使用完全相同的名称/文本进行多于一步,但您可以使用ScopedStepBinding来确保为要素调用该步骤的正确版本.因此,您可以将"当我导航到Boo"出现在多个功能文件中时,但通过使用步骤范围,您可以控制为功能文件运行的代码.

  • "创建一个共享步骤的类" - >这不仅是一个选项,它是强制性的.在SpecFlow中,所有步骤都是共享的.步骤类只是步骤容器,但它们不会封装它们.因此,最好通过公共方面(ProductSteps,CustomerSteps,PaymentSteps等)而不是按功能(CheckoutFeatureSteps)组织类中的步骤,因为这些步骤无论如何都可用于其他功能.这不会改变你的答案的有效性,但我发现在使用SpecFlow时,了解这个细节会有很大帮助. (3认同)