【问题标题】:SpecFlow: Having different implementations for steps with the same nameSpecFlow:具有相同名称的步骤的不同实现
【发布时间】:2014-03-21 08:16:10
【问题描述】:

我目前正在使用 SpecFlow 来创建一些用户验收测试。生成步骤后,我注意到生成器会为不同场景中的每个步骤创建一个步骤,看起来相同。

问题是,因为我试图描绘的每个场景都是不同的,即使它们可能使用相同的方法调用,我仍然想使用模拟 (Moq) 来调整环境。考虑到在生成的代码中看起来相同的所有场景步骤指向相同的方法(步骤),这相当困难。

有人能解释一下我应该怎么做,或者我的方法是错误的吗?

【问题讨论】:

  • 这可能表明您的命名含糊/过于笼统。如果这些步骤应该以不同的方式执行,为什么它们最终会使用相同的名称?
  • 嗨,Damien,只是场景不同。系统仍应遵循相同的执行路径。因为模拟的设置不同,所以每个场景都会产生不同的结果。我听到你在说什么,所以如果我不能按照文档介绍参数,我会看看。谢谢!
  • 这将有助于了解两个具有不同接线要求的不同场景,它们具有相同的命名步骤,以及您想要的每个实现。然后我们可以评论您是否可以进行更改或可以利用的功能。

标签: c# bdd specflow


【解决方案1】:

您可以参数化 Specflow 步骤。你可能有这样的步骤:

Given 'Bob' logs in 

生成的步骤可能会打开参数以执行不同的场景。例如

    [Given(@"'(.*)' logs in")]
    public static void GivenUserLogsIn(string user)
    {
        if (string.Equals("Bob")
            DoBobScenario();
        else if (string.Equals("Joe")
            DoJoeScenario();
    }

这不是完全相同的步骤名称,但该参数可以让您区分您有兴趣测试的场景。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多