单元测试以检查部分视图是否编译

时间:2015-07-17 14:04:26

标签: c# .net unit-testing visual-studio-2012 razor

我有以下方法需要渲染视图(此视图实际上不存在)

public class HomeController : Controller
{
    public ActionResult GetTestPage()
    {
        return PartialView("~/Views/admin/TestPage.cshtml");
    }
}

我在单独的课程中有以下测试方法。

[TestClass()]
public class HomeControllerTests : Controller
{
    [TestMethod()]
    public void GetTestPageTest()
    {
        HomeController hc = new HomeController();
        ActionResult actual = null;
        try
        {
            actual = hc.GetTestPage();
        }
        catch (Exception e)
        {
            System.Diagnostics.Debug.WriteLine("Exception Caught, Test Fail: " + e.ToString());
            Assert.Fail();
        }
        Assert.IsNotNull(actual);
    }
}

目前此测试已通过,但不应该通过。我知道我可以通过在{{1}中将<MvcBuildView>标记设置为true来打破构建文件。

但是,我想进行单元测试(在VS 2012中使用MS测试环境),测试视图是否编译/存在/发回响应。

最好的方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

测试不会失败,因为控制器的PartialView方法只返回类型为PartialViewResult的对象,其中包含您在ViewName属性中提供的视图名称。当MVC引擎看到这个对象时,他说“好吧,它现在是PartialViewResult我应该渲染它指向”的视图,而然后它会崩溃,如果文件不存在。这当然不会在单元测试中发生。

您的测试选项可能是在物理上检查文件是否存在(您当然需要进行一些路径操作以将相对~/...视图路径转换为项目中的相对或绝对路径)。我不知道你还能做什么。