如何在测试时覆盖或禁用特定过滤器

时间:2014-04-03 15:07:44

标签: laravel laravel-4

我需要在测试时启用过滤器,因为有些对我的应用程序逻辑非常重要,在我的测试设置中我有Route::enableFilters();现在的问题是我在顶部添加了一个CSRF过滤器现在我的考试打破了。

测试时有没有办法覆盖或禁用CSRF过滤器?

2 个答案:

答案 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;
});