- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对自定义 ActionFilterAttribute 进行单元测试。例如:
public class ActionAuthorizationAttribute: ActionFilterAttribute
{
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Response.Redirect("SecurityException");
}
}
我如何编写一个单元测试来测试任何具有此属性的操作是否会重定向到 SecurityException。
我的尝试
[TestClass]
public class TestControllerResponse
{
[TestMethod]
public void TestPermissionAccepted()
{
var controller = new TestController();
var result = controller.Index() as RedirectToRouteResult;
Assert.IsNotNull(result);
Assert.AreEqual("SecurityException", result.RouteValues["action"]);
}
}
protected class TestController : Controller
{
[ActionAuthorization]
public ActionResult Index()
{
return RedirectToAction("UnfortunatelyIWasCalled");
}
}
不幸的是,测试失败了。索引操作重定向到“UnfortunatelyIWasCalled”而不是“SecurityException”。
最佳答案
我不会对 Controller 的 Action 进行单元测试来测试 Action 过滤器的行为。它们是两个不同的问题。例如,如果有人去更改 ActionAuthorizeAttribute 的 OnActionExecutedMethod 以返回不同的异常,那么您对 Controller 的 Action 的单元测试将因错误的原因而失败。这是因为,您正在测试 Action,但您的代码还在 ActionFilter 中测试其他内容。单元测试就是关于孤立地验证工作单元的行为。如果你真的想测试 ActionFilter,我会单独对过滤器进行单元测试。 ActionFilter 是否在您的 Action 执行后被调用是一个单独的问题,并且已经通过 MVC 框架进行了测试。
关于c# - 如何测试 ActionFilterAttribute - OnActionExecuted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11223473/
我想添加一些代码来记录 Controller 中每个 Action 调用所花费的时间。我看到了在 Controller 的 OnActionExecuting 方法中创建一个 Stopwatch 并停
有没有办法在不使用 session 变量的情况下从 OnActionExecuted 的 MVC 操作中获取 HTTP 状态代码? 最佳答案 有几种方法可以访问它。主要是通过 ActionExecut
我有以下内容: public override void OnActionExecuting(ActionExecutingContext filterContext) {
我创建了一个 ActionFilterAttribute,用于在允许处理 MVC Controller get/post 请求之前验证帐户是否可用于处理。如果该帐户不可用,我想向客户返回错误。如果请求
使用 .NET 核心 MVC C# 我有一个 Controller : [ServiceFilter(typeof(MyCustomFilter))] public class HomeControl
我想知道如何在 OnActionExecuting 覆盖方法中检查 Controller 方法是否具有特定属性,例如 AllowAnonymous。 我试过这个: var methodAttr = A
如果这很明显,我深表歉意,但我正在尝试创建一个属性来处理局部 View 中使用的模型的缓存。 [MyCache(typeof(MyModel))] public ActionResult My
我正在尝试对自定义 ActionFilterAttribute 进行单元测试。例如: public class ActionAuthorizationAttribute: ActionFilterAt
我正在尝试重定向未通过 OnactionExecuting() 进行身份验证的访问者,以便它覆盖我的整个 Controller ,但它几乎就像被完全跳过一样。是否可以从 OnActionExecuti
我制作了一个实现了 OnActionExecuted 方法的 ActionFilterAttribute。也就是说,它在 Action 方法之后运行。但是,在某些情况下,我希望 OnActionExe
我的网址如下所示: www.example.com/{languagecode}/{controller}/{action}/{id} 其中语言代码是 en-us 等。 从 OnActionExecu
我们正在尝试实现一个非托管 header ,它将接受 *.website.com 之前的任何内容|在 ASP.NET 中。由于它将接受任何子域,因此我们扩展了 HttpContextBase 类以添加
我创建了一个基本 Controller ,我的每个 Controller 都继承了它。在这个 Controller 中,我有 OnActionExecuting 方法。我用它来检查一些参数的 url。
如果用户 session 超时,我正在尝试在我的 BaseController 中使用 OnActionExecuting 来处理重定向到登录屏幕。然而,它甚至在我登录之前就导致无限重定向 - 谁能建
在我的 MVC 4 网络应用程序中,我要求用户在使用该应用程序一定天数后选择一种付款方式。 我通过创建一个 Controller 基类并使我所有的 Controller 都继承自它来实现它。基类有如下
如果某些 session 变量为空,我会有点困惑,我想生成一个局部 View 而不是 redirectResult。是否可以?如果是这样怎么办?我可以看到有一个 PartialViewResult,但
我有多个 ASP.NET MVC 5 项目,它们在页面顶部有标题/菜单,其中 html 完全相同。从数据库中提取了一些菜单项、 Logo 和链接。为了跨项目消除这些冗余代码,我想为标题使用一个共享项目
OnActionExecuted 和 OnResultExecuting 有什么区别?一旦处理完 Action ,它们会立即被解雇,还是在这两种方法之间发生某些事情。就像 View 引擎的初始化一样,
我稍微修改了默认路由规则,如下所示: routes.MapRoute( "Default", // Rou
我搜索了高低,似乎找不到直接的答案。 如果我有自定义属性/过滤器,OnActionExecuted 是否会出现?方法总是被调用?即使有异常抛出? 最佳答案 至少在 MVC 5 中,@tvanfosso
我是一名优秀的程序员,十分优秀!