2014-04-03 39 views
0

我需要過濾器在測試時啓用,因爲有些對我的應用邏輯非常重要,在我的測試設置中,我有Route::enableFilters();現在問題是我添加了CSRF過濾器的頂部,現在我的測試正在打破。如何在測試時覆蓋或禁用特定的過濾器

有沒有辦法在測試時覆蓋或禁用CSRF過濾器?

回答

7

您只需關閉監聽器,這個過濾器:

Event::forget('router.filter: csrf'); 
+0

不錯,謝謝! – silkAdmin

1

的一種方式(但無可否認不是最優雅的)將是您的CSRF過濾器來檢查「測試」環境:

Route::filter('csrf', function($route, $request) 
{ 
    // are we in the testing environment? if so, don't bother with the 
    // token value 
    if(App::environment()=="testing") 
     return; 

    // check the CSRF token 
    if (Session::token() != Input::get('_token')) 
     throw new \Illuminate\Session\TokenMismatchException; 
}); 
相關問題