我需要在测试时启用过滤器,因为有些对我的应用程序逻辑非常重要,在我的测试设置中我有Route::enableFilters();
现在的问题是我在顶部添加了一个CSRF过滤器现在我的考试打破了。
测试时有没有办法覆盖或禁用CSRF过滤器?
答案 0 :(得分:7)
您可以关闭此过滤器的侦听器:
Event::forget('router.filter: csrf');
答案 1 :(得分: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;
});