dpw50696 2017-01-21 11:33
浏览 71

用于测试的Laravel中间件

I've build an api in Laravel 5.3 with jwt web tokens. If I want to test this I've to add this before every request:

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

If I add this to the constructor in my controller it's working. But when I add this to a middleware all my tests are failing.

I've added the middleware to the $routeMiddleware array in kernel.php. The middleware looks like this:

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

When I dd('test'); in the if statement the dd('test'); is being is being reached.

The middleware is being assigned in my routes file like this:

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

So why is this working in the constructor of a controller but not in a middleware?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 虚幻5 UE美术毛发渲染
    • ¥15 CVRP 图论 物流运输优化
    • ¥15 Tableau online 嵌入ppt失败
    • ¥100 支付宝网页转账系统不识别账号
    • ¥15 基于单片机的靶位控制系统
    • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
    • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
    • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
    • ¥15 手机接入宽带网线,如何释放宽带全部速度
    • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测