POSTアクションメソッドを単体テストする必要があるため、それらのリストが必要です。私はリフレクションを使用して、でこれらのメソッドを見つけています[AcceptVerbs(HttpVerbs.Post)]
。
// get controller's methods
typeof(FooController).GetMethods()
// get controller's action methods
.Where(q => q.IsPublic && q.IsVirtual && q.ReturnType == typeof(ActionResult))
// get actions decorated with AcceptVerbsAttribute
.Where(q => q.CustomAttributes
.Any(w => (w.AttributeType == _typeof(AcceptVerbsAttribute)))
)
// ...everything is ok till here...
// filter for those with the HttpVerbs.Post ctor arg
.Where(q => q.CustomAttributes
.Any(w => w.ConstructorArguments.Any(e => e.Value.Equals(HttpVerbs.Post))))
;
しかし、これは私に空のリストを与えます。問題は、属性のコンストラクターの最後のチェックにあります。どうすれば修正できますか?
アクションのメソッドをPOSTとして宣言するには、AcceptVerbsAttribute
上記のように使用する方法と、の2つの方法があることに注意してくださいHttpPostAttribute
。