2

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

4

2 回答 2

3

FilterConfig默认情况下(在 App_Start 下)注册全局过滤器,对吗?这是这样的:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }
}

然后,您可以从测试用例调用此方法并传递一个GlobalFilterCollection实例,然后您可以测试GlobalFilterCollection您通过的顺序。

于 2013-03-25T20:42:25.483 回答
0

如果你想要一个特定的订单,你甚至可以指定一个订单作为一个属性

例如 [FilterName(Order = 1)]

默认情况下,过滤器没有指定任何顺序,因此它们由框架随机执行。

Order> -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

于 2014-02-26T18:11:32.087 回答