暂时禁用/绕过中间件

nah*_*hri 6 laravel-routing laravel-5 laravel-middleware

在我的应用程序中,我实现了OAuth2-Server(oauth2-server-laravel)与自定义身份验证包(Sentinel by Cartalyst)的组合.

在我的routes.php中:

Route::group(['before' => 'oauth'], function()
{
    // ... some routes here
}
Run Code Online (Sandbox Code Playgroud)

因此,请求必须提供授权标头,否则应用程序将退出OAuthException.

现在我想对我的控制器进行单元测试.因此,我必须为每个测试使用OAuth会话和访问令牌为我的数据库建立种子.然后覆盖call()-method TestCase并使用Bearer Token设置HTTP-Authorization Header.

有没有办法禁用或绕过中间件(在我的情况下仅用于单元测试)?

在Laravel 4中,它们被称为路由过滤器,无论如何它们在测试环境中被禁用.您也可以手动启用/禁用它们Route::enableFilters().

nah*_*hri 6

显然,随着Laravel 5.1的发布,该类disableMiddleware()已经添加了一个方法TestCase,该方法现在完全符合我的要求.

问题解决了.:)

  • 所以只需在你的测试用例类中使用`use WithoutMiddleware;` (3认同)