1

NUnit を使用して、MVC4 アプリケーションの単体テストを作成するのに非常に苦労しています。現在、特にこの 1 つのテストに焦点を当てています。このテストでは、ユーザーをログインするか、ユーザーが存在しない場合はユーザーを作成してからログインします。テストは次のとおりです。

[Test]
public void LoginValidUser()
{
       //Start up the DB connection
        App_Start_DB();

        //Setup our default test user
        string UserName = "LocalTestUser@penrouse.com";
        string Password = "books";
        bool LoginWorked = false;

        //check and see if our test user exists
        if (!WebSecurity.UserExists(UserName))
        {
            //If not, create them
            WebSecurity.CreateUserAndAccount(UserName, Password, new
            {
                Name = "Local Test User",
                IsPromotional = true,
                IsAllowShare = true
            });

            //Log them in
            LoginWorked = WebSecurity.Login(UserName, Password);
        }
        else
        {
            //This user already exists, just log them in     
            LoginWorked = WebSecurity.Login(UserName, Password);
        }

        Assert.IsTrue(LoginWorked);
        Trace.WriteLine("Login Valid User Result : " + LoginWorked.ToString());
}

問題は、 を試みるたびにWebSecurity.Login()null 参照例外が発生し、スタック トレースが を指していることです。

System.Web.Security.FormsAuthentication.SetAuthCookie(String userName, Boolean createPersistentCookie, String strCookiePath);

ログイン試行の直前にそのメソッドを呼び出しても、動作は変わりません。したがって、2 つの質問があります。

  • SimpleMembership のこれらの部分をテストするためのより良い方法はありますか?
  • そうでない場合、この方法でテストしたときにログインが機能するように、AuthCookie をオーバーライドまたはモックアウトする良い方法はありますか?

どんな助け\洞察も大歓迎です。

4

0 に答える 0