我有以下方法需要渲染视图(此视图实际上不存在)。
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测试环境),测试视图是否编译/存在/发回响应。
最好的方法是什么?
谢谢!
答案 0 :(得分:1)
测试不会失败,因为控制器的PartialView
方法只返回类型为PartialViewResult
的对象,其中包含您在ViewName
属性中提供的视图名称。当MVC引擎看到这个对象时,他说“好吧,它现在是PartialViewResult我应该渲染它指向”的视图,而然后它会崩溃,如果文件不存在。这当然不会在单元测试中发生。
您的测试选项可能是在物理上检查文件是否存在(您当然需要进行一些路径操作以将相对~/...
视图路径转换为项目中的相对或绝对路径)。我不知道你还能做什么。