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();
        }
    }

参考:これをdebug controller.HttpContextとcontroller.RouteDataで実行すると、nullになります。ありがとう

4

1 に答える 1

3

RazorGeneratorを使用して、単体テスト内のビューを実行できます。これは、DavidEbboがこれを説明しているブログ投稿です。

しかし、それらはもはや単体テストではありません。これらは統合テストであり、アプリケーションで統合テストを実行できるWatinなどのツールを使用できます。

于 2012-10-18T14:47:02.010 に答える