SpecFlow:具有相同名称的步骤的不同实现

时间:2014-03-19 07:42:24

标签: c# bdd specflow

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以参数化Specflow步骤。您可能会采取以下步骤:

Given 'Bob' logs in 

生成的步骤可能会打开参数以执行不同的方案。 e.g。

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

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