我有一个MVC4应用程序,并在global.asax中添加了一堆全局过滤器。他们需要一个订单。我想编写单元测试以确保它们始终处于所需的顺序。有没有办法访问所有全局过滤器或测试它?
答案 0 :(得分:3)
默认情况下,您在FilterConfig
注册全局过滤器(在App_Start下),对吗?这是这样的:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}
然后,您可以从测试用例中调用此方法并传递GlobalFilterCollection
实例,之后您可以测试您传递的GlobalFilterCollection
的顺序。
答案 1 :(得分:0)
如果您想要特定订单,您甚至可以将订单指定为属性
e.g。 [FilterName(Order = 1)]
默认情况下,过滤器没有指定任何顺序,因此它们由框架随机执行。
任何订单> -1确保执行过滤器的顺序。
(不确定这是否有助于提供更多信息,我认为它会更有用)
参考文献:
http://msdn.microsoft.com/en-us/library/system.web.mvc.filter(v=vs.118).aspx http://msdn.microsoft.com/en-us/library/system.web.mvc.filter.order(v=vs.118).aspx