如何在Spec Flow中管理全局变量

时间:2013-06-19 06:55:29

标签: c# unit-testing bdd specflow

我对我的控制器进行了以下测试

[Binding]
public class RegisterUserSteps
{
    private AccountController _accountController = new AccountController();
    private ActionResult _result; 



    [When(@"the user goes to the register user screen")]
    public void WhenTheUserGoesToTheRegisterUserScreen()
    {
       _result = _accountController.Register();
    }

    [Then(@"the register user view should be displayed")]
    public void ThenTheRegisterUserViewShouldBeDisplayed()
    {
        Assert.AreEqual("Register", _accountController.ViewData["Title"]);
    }
}

它工作正常,但它看起来不太好,因为我不想制作全局/类级变量。那么什么可能是规范流中这些变量的替代。因为当我们进入大型应用程序并且单步文件包含许多场景时,它将是一团糟并且难以管理。

提前致谢

1 个答案:

答案 0 :(得分:4)

我倾向于使用ScenarioContext.Current["KeyName"],以便我可以在不同的类中定义步骤。有关更多详细信息和一些备选方案,请参阅specflow文档:sharing data between bindings