2012-03-23 1 views
0

RenderPartialViewToStringを使用してJsonをレンダリングするコントローラアクションをユニットテストしたいです。 NSubstituteをテストのフレームワークとして使用します。ここでの問題は、ControllerContextの使用がテスト環境では使用できないためです。ユニットテストMVC 3のRenderPartialViewToStringを呼び出す関数

protected string RenderPartialViewToString(string viewName, object model) { 
      if (string.IsNullOrEmpty(viewName)) 
       viewName = ControllerContext.RouteData.GetRequiredString("action"); 

      ViewData.Model = model; 
      ViewBag.RepositoryFactory = this.RepositoryFactory; 

      using (StringWriter sw = new StringWriter()) { 
       ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); 
       ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); 
       viewResult.View.Render(viewContext, sw); 

       return sw.GetStringBuilder().ToString(); 
      } 

     } 

助けていただければ幸いです。

答えて

0

ControllerContextを内部的に使用している間に必要なデータを返すラッパークラスを作成し、それをテストフレームワークに置き換えることができます。

また、このような種類のものには、スタティックを代入できるテストフレームワークがあります。Moles

関連する問題