Tôi đang thử đơn vị kiểm tra việc chuyển hướng bộ điều khiển của tôi trong MVC 4 .Net 4.5. Dưới đây là một ví dụ:Kiểm tra đơn vị 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");
}
đây là bộ điều khiển:
[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);
}
Vấn đề biến result
trong thử nghiệm đơn vị là null
. Tôi tìm thấy mã này từ một người đang làm việc trên một dự án MVC 2 và nó dường như làm việc cho anh ta. Có gì thay đổi với MVC 4?
Cảm ơn trước!
Bạn có chắc chắn hành động thực sự trả về RedirectToAction ("Index", "Home")? Nên có một số logic trong hành động Đăng ký. Nếu nó trả về bất kỳ loại kết quả khác và bạn đang cố gắng để làm cho nó như RedirectToRouteResult hơn bạn sẽ nhận được null. – Felix
Tôi nhận được đối tượng RedirectToRouteResult khi tôi thử. Bạn có chắc chắn bộ điều khiển của bạn trông giống như vậy? – Rickard
Tôi đoán bạn có thể nhận được một ViewResult – VJAI