コントローラーのアクションで単体テストを実行したいのですが、アクションが正しく実行される前に OnActionExecuting フィルターを実行する必要があります。
多くのアクション フィルターを使用しているため、テストを行うたびに手動で実行したくありません。
以下のようにコントローラーのアクション メソッドを直接呼び出すと、結果は取得できますが、フィルターは実行されません。
ViewResult vr = myController.MyAction("hello world") as ViewResult;
Assert.AreEqual("View1", vr.ViewName);
次のようなアクションを呼び出すときにアクション フィルターを実行する方法を見つけました。
var routeData = new RouteData();
routeData.Values["controller"] = "MyController";
routeData.Values["action"] = "MyAction";
var rc = new RequestContext(new HttpContextWrapper(HttpContext.Current), routeData);
(myController as IController).Execute(rc);
しかし、アクション結果を取得する方法が見つかりません。アクションフィルターを起動してアクション結果を取得することは可能ですか?