2012-10-18 22 views
2

如何在我的測試方法中生成HTML(視圖)?MVC在測試方法中獲取查看HTML輸出

我有以下幾點:

控制器:

public ActionResult Index() 
{ 
    ViewBag.Message = "Welcome to ASP.NET MVC!"; 

    return View(); 
} 

查看:

@{ 
    ViewBag.Title = "Home Page"; 
} 

<h2>@ViewBag.Message</h2> 
<p> 
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>. 
</p> 

測試:

[TestMethod] 
    public void HomeControllerReturnsView() 
    { 
     // Arrange 
     var controller = new HomeController(); 

     // Act 
     var result = controller.Index() as ViewResult; 

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

      var test = sw.GetStringBuilder().ToString(); 
     } 
    } 

FYI:當我在調試器運行此。 HttpContext和con troller.RouteData爲null。 感謝

+0

投票重新開放 - 我想這是關閉,因爲它是不清楚的單元測試的一部分失敗......但問題本身看起來挺有意思的(「如何獲取HTML作爲單元測試查看結果」)。 –

回答

3

您可以使用RazorGenerator執行單元測試中的意見。這裏有一個blog post,其中David Ebbo說明了這一點。

但這些不再是單元測試。它們是集成測試,您可以使用諸如Watin之類的工具,它們可以讓您對應用程序執行集成測試。