似乎随着 MVC4 的发布版本发生了一些变化,导致当从单元测试中测试操作结果时,不会调用自定义操作结果中的 ExecuteResult 方法。
这是一个非常人为的示例,适用于 MVC3 和 MVC4 的早期版本。从单元测试运行时,执行结果永远不会“执行”。我在这里想念什么?其他人看到这种行为吗?
行动结果
public class SomeActionResult : ActionResult
{
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("null context");
}
var view = new ViewResult {ViewName = "index"};
view.ExecuteResult(context);
}
}
控制器动作
[HttpPost]
public ActionResult Index(string something)
{
return new SomeActionResult();
}
单元测试(使用 MVCContrib)
[Test]
public void ShouldWork_but_doesnt_in_mvc4()
{
var controller = new HomeController();
var result = controller.Index("test");
result.AssertViewRendered();
}