2012-05-08 10 views
3

ナンシーブラウザを認証していることを示すユニットテストです(他のコードは切り捨てられています)。これを行うよりスマートでDRYerな方法があるかどうか疑問に思っていましたか?NancyFX:ユニットテストブラウザをデフォルトで強制認証できますか?

[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("/"); 
} 

答えて

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; 
} 
+0

ああ - 良いアイデア。私は '.Then'を持つ必要性に戸惑っていましたが、もちろん、ブラウザのインス​​タンスを流体インターフェイスから戻すこともありました。ニース:-) – biofractal

関連する問題