2012-09-11 6 views
5

をレンダリングしたは私が見解を持っており、それは内部のレンダリング部分ビューを持っているC#ASP .NETでMVC

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

は私が間違って何をやってもらいますか?

答えて

3

私は間違っていますか?

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

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

一般に、ほとんどの人は単体テストのビューを用意していません。 "MVCユニットテストビュー"についてthis blogまたはgoogleを参照してください。

2

変更

return View(model); 

return PartialView(model); 

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

+0

Assertion AssertPartialViewRendered()。コントローラがビューを返すときに、ForView( "partial")... 'ビュー "。 – Joe

+0

それに気付かなかった。ありがとう –

関連する問題