单元测试MVC中的全局过滤器

时间:2013-03-25 20:37:13

标签: asp.net-mvc unit-testing global-filter

我有一个MVC4应用程序,并在global.asax中添加了一堆全局过滤器。他们需要一个订单。我想编写单元测试以确保它们始终处于所需的顺序。有没有办法访问所有全局过滤器或测试它?

2 个答案:

答案 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