5

ビューがあり、内部に部分的なビューのレンダリングがあります:

<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.

私は何を間違っていますか?

4

2 に答える 2

3

私は何を間違っていますか?

コントローラーをテストしています。このようなテストは、基本的にビューをモックし、コントローラーが期待されるビュー (およびモデル) を返すことを確認するだけです。

PartialView を「部分的に」レンダリングするビューの「ビュー」はテストに関与しないため、期待どおりに動作しているかどうかをテストすることはできません。

一般に、ほとんどの人はビューの単体テストを行いません。しかし、そうしたい場合は、このブログまたはグーグルで「MVC単体テストビュー」を探してください

于 2012-09-11T13:28:41.487 に答える
2

変化する

return View(model); 

return PartialView(model);

例外はそれをすべて言います。部分的なビューの結果を期待していますが、ビューの結果を返しています。

于 2012-09-11T13:26:32.567 に答える