2

如何在我的测试方法中获得生成的 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();
        }
    }

仅供参考:当我在调试 controller.HttpContext 和 controller.RouteData 中运行它时为空。谢谢

4

1 回答 1

3

您可以使用RazorGenerator在单元测试中执行视图。这是一篇文,其中 David Ebbo 说明了这一点。

但那些不再是单元测试。它们是集成测试,您可以使用Watin等工具来对应用程序执行集成测试。

于 2012-10-18T14:47:02.010 回答