私はAzureでMVC4プロジェクトを持っています。私はユーザーのログインを確認する簡単なテストを書いてみたい。私のログインアクションは、最初はそのコントローラパラメータを使用したユニットテスト
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
リターンとNullReferenceExceptionとも
Url.IsLocalUrl(returnUrl)
で、私は2つの問題を持っている
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
と私のテスト方法
[TestMethod]
public void UserValidLoginTest()
{
// Arrange
AccountController controller = new AccountController();
// Act
LogOnModel model = new LogOnModel()
{
UserName = "[email protected]",
Password = "pass1234"
};
var result = controller.LogOn(model, null) as RedirectToRouteResult;
// Assert
Assert.IsNotNull(result);
Assert.AreEqual(result.RouteValues["action"], "Index");
}
として定義されます同じことをする。どうすればこの問題を解決できますか?どうすればテストできますか?私はまた、SeleniumやMoqとの統合テストを書くこともできましたが、Azureでテストする方法がわかりません。任意のアイデアはどのようにこの問題にアプローチする?
静的なクラスのテストは難しいです。これらのオブジェクトにインターフェイスを使用できますか?次に、インターフェイスをモックします。 – Joe
例を挙げることはできますか?私はどのようにそれを行うには便利な例が見つかりません。 – FrEaKmAn