Asp.net mvc MVC在测试方法中获取查看HTML输出

Asp.net mvc MVC在测试方法中获取查看HTML输出,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,如何在测试方法中生成HTML(视图) 我有以下资料: 控制器: public ActionResult Index() { ViewBag.Message = "Welcome to ASP.NET MVC!"; return View(); } 视图: 仅供参考:当我在调试控制器中运行此命令时,controller.HttpContext和controller.RouteData为空。 谢谢,您可以使用来执行单元测试内部的视图。这里有一个例子,大卫·埃博(David Ebb

如何在测试方法中生成HTML(视图)

我有以下资料:

控制器:

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

    return View();
}
视图:

仅供参考:当我在调试控制器中运行此命令时,controller.HttpContext和controller.RouteData为空。 谢谢,您可以使用来执行单元测试内部的视图。这里有一个例子,大卫·埃博(David Ebbo)就说明了这一点


但这些不再是单元测试。它们是集成测试,您可以使用这样的工具,允许您在应用程序上执行集成测试。

投票重新打开-我猜它关闭了,因为不清楚单元测试的哪个部分失败了。。。但问题本身对我来说很有趣(“如何在单元测试中获得html作为视图的结果”)。
@{
    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();
        }
    }