Mic*_*tum 20
返回ActionResult而不是"只做ActionResult正在做的事情"(即直接使用Response.Redirect或尝试通过Response OutputStream直接渲染View)给你一个非常好的优势:单元测试非常简单,特别是因为您通常不需要Web服务器来对MVC项目进行单元测试.
附录:作为重定向的示例:
如果你这样做
return Redirect(newUrl);
Run Code Online (Sandbox Code Playgroud)
在您的控制器中,您的单元测试现在可以
附录2:当我在上面时,这是一个自定义ActionResult的示例:
http://www.stum.de/2008/10/22/permanentredirectresult/
这只是为了表明他们不是"黑魔法".它们实际上非常简单:您的Controller返回一个Action Result,MVC Runtime最终会调用它上面的ExecuteResult函数,传入一个ActionContext可以与之交互的ControllerContext.重点是将MVC的各个部分分开,使代码可重用,并使单元测试更容易,或简而言之:给出一个非常干净的框架.
ActionResult 是许多不同类型的控制器结果的基类。通过返回基类,控制器操作可以根据方法的结果返回不同类型的结果 - ViewResult、RedirectToActionResult 等。ActionResult 包含 View 或作为以下结果的新 Action 所需的所有数据当前控制器的动作。
归档时间: |
|
查看次数: |
9620 次 |
最近记录: |