2013-03-25 33 views
2

我有一個MVC4應用程序並在global.asax中添加了一堆全局過濾器。他們需要一個訂單。我想寫一個單元測試,以確保它們始終按照所需的順序。有沒有辦法訪問所有的全球過濾器或測試?單元測試MVC中的全局過濾器

回答

3

您在默認情況下(在App_Start下)在FilterConfig中註冊全局過濾器,對不對?這是這樣的:

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

然後,您可以調用從測試情況下,這個方法並傳遞一個GlobalFilterCollection實例之後,你可以測試你通過GlobalFilterCollection的順序。

+0

完美,這是一個好主意。非常感謝您的工作。 – tmjam 2013-03-25 22:48:49

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