MVC 4 .Net 4.5でコントローラのリダイレクトをユニットテストしようとしています。ここでの例である:ここでユニットテストMVC 4 RedirectToAction
[TestMethod]
public void Register_PassValidModel_RedirectToHomeIndexShouldBeTrue()
{
//Arrange
var registerModel = new RegisterModel
{
Email = "[email protected]",
Password = "password"
};
//Assign
var result = _controller.Register(registerModel) as RedirectToRouteResult;
//Assert
result.RouteValues["Action"].ShouldBeEqual("Index");
result.RouteValues["Controller"].ShouldBeEqual("Home");
}
がコントローラである:
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
var userToRegister = new User { Email = model.Email, Password = model.Password };
var service = new UserService(_userRepository);
User user = service.RegisterUser(userToRegister);
if (user.UserErrorMessages.Count != 0)
{
user.UserErrorMessages.ForEach(x => ModelState.AddModelError("", x));
return View(model);
}
SetCookie(model.Email);
return RedirectToAction("Index", "Home");
}
return View(model);
}
発行ユニットテストにおける変数result
はnull
あります。私はMVC 2プロジェクトに取り組んでいた人からこのコードを見つけました。彼は彼のために働いていたようです。 MVC 4で何か変わった?
ありがとうございます!
あなたのためにそれが意志便利願ってアクションが実際にRedirectToAction(「インデックス」、「ホーム」)を返しますが、確かではありますか? Registerアクションにはいくつかのロジックが必要です。他の種類の結果が返され、それをRedirectToRouteResultとして作成しようとすると、nullが返されます。 – Felix
私はRedirectToRouteResultオブジェクトを取得しました。あなたのコントローラはまさにそのように見えますか? – Rickard
ViewResultを取得している可能性があります。 – VJAI