カスタム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");
}
}
残念ながら、テストは失敗します。インデックスアクションは、「SecurityException」ではなく「UnfortunatelyIWasCalled」にリダイレクトされます。