我想單元測試一個自定義的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