我想单元测试一个自定义的ActionFilterAttribute。例如:如何测试ActionFilterAttribute - OnActionExecuted
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");
}
}
不幸的是,测试失败。索引操作重定向到“LaterIWasCalled”而不是“SecurityException”。
为什么你要对控制器类进行单元测试,如果它是你想测试的ActionAuthorizationAttribute类的话? – Morten