15
我想單元測試我的控制器在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(「指數」,「家」)?註冊行動應該有一些邏輯。如果它返回任何其他類型的結果,並且您試圖將其設置爲RedirectToRouteResult,則您將得到null。 – Felix
當我嘗試時,我得到了一個RedirectToRouteResult對象。你確定你的控制器看起來就像那樣嗎? – Rickard
我想你可能會得到一個ViewResult – VJAI