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 をオーバーライドまたはモックアウトする良い方法はありますか?
どんな助け\洞察も大歓迎です。