用于测试的Laravel middlware

时间:2017-01-21 11:33:40

标签: php laravel testing phpunit token

我使用jwt web令牌在Laravel 5.3中构建了一个api。如果我想测试这个,我要在每个请求之前添加它:

if ((\App::environment() == 'testing') && array_key_exists("HTTP_AUTHORIZATION", Request::server())) {
    JWTAuth::setRequest(\Route::getCurrentRequest());
}

如果我将它添加到我的控制器中的构造函数中它正在工作。但是,当我将其添加到中间件时,我的所有测试都失败了。

我已将中间件添加到$routeMiddleware中的kernel.php数组中。中间件看起来像这样:

class TestingKeepRequest
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ((\App::environment() == 'testing') && array_key_exists("HTTP_AUTHORIZATION", Request::server())) {
            JWTAuth::setRequest(\Route::getCurrentRequest());
            dd('test');
        }

        $next($request);
    }
}

dd('test'); if statement正在到达时dd('test');

正在我的路线文件中分配中间件,如下所示:

Route::group(['middleware' => ['testing', 'active', 'throttle']], function () { //etc....

那么为什么这个在控制器的构造函数中工作而不是在中间件中呢?

0 个答案:

没有答案