2012-09-11 26 views
5

tôi có một cái nhìn và nó có xem một phần render bên:Làm thế nào để kiểm tra xem một phần được kết xuất trong C# ASP NET MVC

<div class="partialViewDiv"> 
    @Html.RenderPartial("partial", Model.SomeModelProperty); 
</div> 

Và một bộ điều khiển, mà trả về quan điểm này

public ActionResult Action() 
     { 
      ... 
      var model = new SomeModel(){SomeModelProperty = "SomeValue"} 
      return View("view", model); 
     } 

Làm thế nào để kiểm tra xem đã trả lại tôi biết:

[TestMethod] 
public void TestView() 
{ 
    ... 
    var result = controller.Action(); 

    // Assert 
    result.AssertViewRendered().ForView("view").WithViewData<SomeModel>(); 
} 

nhưng khi tôi gọi

result.AssertPartialViewRendered().ForView("partial").WithViewData<SomeModelPropertyType>(); 

tôi nhận được thông báo lỗi này

Expected result to be of type PartialViewResult. It is actually of type ViewResult. 

Tôi đang làm gì sai?

Trả lời

3

Tôi đang làm gì sai?

Bạn đang kiểm tra bộ điều khiển: các kiểm tra này về cơ bản giả lập chế độ xem và chỉ xác minh rằng bộ điều khiển đang trả về chế độ xem dự kiến ​​(và mô hình).

Vì chế độ xem "Chế độ xem" hiển thị "một phần" của PartialView không được tham gia vào thử nghiệm nên bạn không thể kiểm tra xem nó có đang làm những gì bạn mong đợi hay không.

Nói chung, hầu hết mọi người không có lượt xem thử nghiệm đơn vị; nhưng nếu bạn muốn xem xét this blog hoặc google cho "chế độ xem thử nghiệm đơn vị MVC"

2

Thay đổi

return View(model); 

Để

return PartialView(model); 

ngoại lệ nói lên tất cả. Bạn đang mong đợi một kết quả xem một phần, nhưng bạn đang trả lại kết quả xem.

+0

Xác nhận 'AssertPartialViewRendered(). ForView ("partial") ... 'sẽ vẫn không thành công khi bộ điều khiển trả về chế độ xem" lượt xem". – Joe

+0

Không nhận thấy điều đó. Cảm ơn –