NancyFX:我可以强制我的单元测试浏览器默认进行身份验证吗?

时间:2012-05-08 10:45:38

标签: unit-testing nancy

这是一个单元测试,显示我验证我的Nancy浏览器(其他代码已被删除)。我想知道是否有更聪明,干燥的方法来做到这一点?

[Fact]
public void Login__Should_redirect_from_login_to_requested_page_if_credentials_are_correct()
{
    var browser = Fake.Browser();
    var response = browser.Post("/login", with =>
                                         {
                                           with.HttpRequest();
                                           with.FormValue("UserName", userName);
                                           with.FormValue("Password", password);
                                          });
    response.ShouldHaveRedirectedTo("/");
}

1 个答案:

答案 0 :(得分:4)

看起来你有一个方法可以传递一个浏览器实例:Fake.Browser()所以为什么不重写这个以提供经过身份验证的版本(如果需要)。也许是这样的事情:

public static Browser Browser(string username = null, string password = null)
{
    var browser = new Browser(new UnitTestBootstrapper());
    if (username.IsEmpty() || password.IsEmpty()) return browser;
    return browser.Post("/login", with =>
                                        {
                                            with.HttpRequest();
                                            with.FormValue("Username", username);
                                            with.FormValue("Password", password);
                                        }).Then;
}