如何测试局部视图,在C#中的ASP.NET MVC被渲染(How to test PARTIAL v

2019-09-22 07:42发布

我有一个观点,它有内部的局部视图渲染:

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

和控制器,它返回这个观点

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

如何测试视图被渲染,我知道:

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

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

但是当我打电话

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

我得到这个错误信息

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

我究竟做错了什么?

Answer 1:

我究竟做错了什么?

您正在测试的控制器:这种测试本质上嘲笑的观点,只是验证控制器返回预期视图(和型号)。

因为呈现PartialView“部分的”查看“视图”没有参与测试,所以你无法检验它是否在做你所期望的。

在一般情况下,大多数人都没有单元测试的意见; 但如果你想这样做,看看这个博客或谷歌为“MVC单元测试视图”



Answer 2:

更改

return View(model); 

return PartialView(model);

异常说明了一切。 你期待的局部视图的结果,但你是返回一个视图的结果。



文章来源: How to test PARTIAL view was rendered in C# ASP .NET MVC