0
我在ASP.NET MVC 3项目中使用模板化的助手。一个显示模板有一个拼写错误 - 一个意外的额外代码块 - 在返回该视图时导致编译器错误(“不要在代码块中放置@if”,您知道)。我无法通过错误的MVC视图测试失败
一切都好,只是调用该视图的测试方法仍然成功。我很难弄清楚如何在单元测试中失败这个代码块。
这里是不好的显示模板:
@model MemberSelectorViewModel
@{
Layout = "~/Views/Shared/_DisplayFormItem.cshtml";
}
@section DataContent {
@{ // <- this was the typo, and it...
@if (Model.idMember.HasValue) // <- causes this to throw a compiler error
{
@Html.ActionLink(Model.FullName, "Details", "Member", new { id = Model.idMember.Value }, null)
@Html.HiddenFor(m=> m.idMember)
}
}
}
这里的,我认为应该是失败的试验:
[TestMethod]
public void DetailsReturnsView()
{
MemberJobController target = new MemberJobController(TestHarness.Context);
memberjob mj = TestHarness.UnitOfWork.MemberJobRepository.FirstOrDefault(x => true);
ActionResult result = target.Details(mj.idmemberjob); // <- this should hit the compiler error, I would have thought
Assert.IsNotNull(result);
}
但是,试验成功。
任何想法如何写一个测试,将失败的模板助手“@ {@if()”错字?
哦,当然。显然,我还没有完全了解MVC的一些巫术......所以你需要一个预编译工具来进行单元测试视图。 – 2012-01-27 17:49:19
不重要,但我不认为这是一个集成测试。虽然我需要实例化一个控制器来测试视图,但它是一个理想化的控制器 - 从哲学角度看,它是测试夹具的一部分,而不是测试的目标。但那不是在那里也不在那里...... – 2012-01-27 17:51:14