我需要对我的 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))))
;
然而,这给了我一个空列表。问题在于最后一次检查属性的 ctor。我如何解决它?
值得注意的是,有两种方法可以将动作的方法声明为 POST:使用AcceptVerbsAttribute
如上,和HttpPostAttribute
.