黄瓜 – SpecFlow – 在不同的类中使用相同的正则表达式的步骤(给定)不独立执行

我有两个类别(A类和B类)都标有[Binding].目前我正在使用每个功能的类. A和B类都有一个如下所示的步骤:
[Given(@"an employee (.*) (.*) is a (.*) at (.*)")]
   public void GivenAnEmployeeIsAAt(string firstName,string lastName,string role,string businessUnitName)

当我为类A中定义的功能运行场景时,测试运行程序执行上述步骤,B类中的匹配步骤将被执行.

“步骤”是否全球化?我认为只有“钩”方法是全局的,即“前景”,“后台”.我不想要这个行为为“给定”,“然后”和“什么时候”.有没有什么办法解决这一问题?我试着把这两个类放在不同的命名空间中,这也不行.

另外,如果我把它们放在单独的类中,那么我可能会把每个“给定”都是独立的,我可能会滥用SpecFlow?

是步骤是(默认)全局.因此,如果定义了两个具有与同一步骤匹配的RegExps的属性,那么您将遇到麻烦.即使他们在不同的课堂.

在单独的课堂上,或者其他组合(甚至其他组件)与SpecFlow如何组合无关 – 它只是给定的一个大列表,何时和之后尝试匹配Step.

但是有一个名为Scoped Steps的功能为您解决了这个问题.在这里查看:https://github.com/techtalk/SpecFlow/blob/master/Tests/FeatureTests/ScopedSteps/ScopedSteps.feature

这个想法是你把Step(属性)属性(StepScope)放在Step Defintion方法上,然后它会遵循这个范围.像这样的例子:

[Given(@"I have a step definition that is scoped to tag (?:.*)")]
[StepScope(Tag = "mytag")] 
public void GivenIHaveAStepDefinitionThatIsScopedWithMyTag()
{
    stepTracker.StepExecuted("Given I have a step definition that is scoped to tag 'mytag'");
}

…或将整个步骤定义类作为一个特征:

[Binding]
[StepScope(Feature = "turning on the light should make it bright")]
public class TurningOnTheLightSteps
{
    // ...
}

此步骤定义使用StepScope进行标记.您可以通过以下方式来缩小步骤

>标签
>场景标题
>功能标题

很好的问题!我目前还没有完全明白这一点;)

相关文章

jquery.validate使用攻略(表单校验) 目录 jquery.validate...
/\s+/g和/\s/g的区别 正则表达式/\s+/g...
自整理几个jquery.Validate验证正则: 1. 只能输入数字和字母...
this.optional(element)的用法 this.optional(element)是jqu...
jQuery.validate 表单动态验证 实际上jQuery.validate提供了...
自定义验证之这能输入数字(包括小数 负数 ) <script ...