2009-04-06 26 views
7

Tôi có phương thức điều khiển trả về RedirectToActionResult (thành công!) Hoặc ViewResult (không thành công với thông báo lỗi).Có thể kiểm tra đơn vị một số kết quả AddModelError trong ASP.NET MVC không?

Nếu logic nghiệp vụ không thành công, tôi thêm thông báo lỗi vào thuộc tính AddModelError.

Có cách nào tôi có thể kiểm tra điều này trong các bài kiểm tra MS Unit của tôi không? Tôi cũng có Moq, nếu điều đó giúp quá. (Tôi không tin rằng Moq là cần thiết cho kịch bản này mặc dù) .. Tôi không sử dụng bất cứ điều gì từ các đối tượng Request.

Trả lời

7

Đúng, đã tìm ra.

// Arrange. 
// .. whatever .. 

// Act. 
var viewResult = controller.Create(new Post()) as ViewResult; 

// Assert. 
Assert.IsNotNull(viewResult); 
Assert.IsNotNull(viewResult.ViewData.ModelState["subject"]); 
Assert.IsNotNull(viewResult.ViewData.ModelState["subject"].Errors); 
Assert.IsTrue(viewResult.ViewData.ModelState["subject"].Errors.Count == 1); 
6

Bạn có thể (cũng) kiểm tra các điều khiển trực tiếp (không kiểm tra xem) như sau:

// Arrange. 
// .. 

// Act. 
controller.Create(new Post()); // missing UserName will invalidate Model with "Please specify your name" message 

// Assert 
Assert.IsTrue(! controller.ModelState.IsValid); 
Assert.IsTrue( controller.ModelState["UserName"].Errors.Any(modelError => modelError.ErrorMessage == "Please specify your name")); 
Các vấn đề liên quan