使用CrawlerTrait时,Lumen 5.0请求对象参数为空:: call()

时间:2016-01-15 16:21:06

标签: testing laravel-5 phpunit lumen-5.2

从PHPUnit测试中调用CrawlerTrait :: call()测试API端点时。

$this->call(
    'GET',
     'api/v3/user?page[size]=20'
);

$this->call(
    'GET',
     'api/v3/user,
     [ 'page' => [ 'size' => 20 ] ]
);

有路线:

$app->group(['prefix'=>'api/v3','namespace'=>'MyAPI\V3core\Http\Controllers'], function ($app) {
    /* User */
    $app->get('user', ['as' => 'user.read', 'uses' => 'UserController@read');
});

使用控制器:

public function read(Request $request, $id = false)
{
    dd($request);
}

传递给控制器​​的 $ request 的内容有一个空的$ request-> request->参数:

+request: Symfony\Component\HttpFoundation\ParameterBag {
    #parameters: []
}

当我通过浏览器,邮递员甚至wget请求相同的API端点时,返回的请求对象带有填充的 $ request-> request->参数

+request: ParameterBag {
    #parameters: array:1 [
        "page" => array:1 [
        "size" => "20"
    ]
  ]
}

这会导致分页或任何查询驱动的功能不可测试,因为它在浏览器中有效,但不能通过CrawlerTrait :: call();

值得一提的是,使用CrawlerTrait :: call()时返回的Response具有查询属性集而不是parameters属性。

+query: Symfony\Component\HttpFoundation\ParameterBag {
    #parameters: array:1 [
        "page" => array:1 [
        "size" => 20
    ]
  ]
}

0 个答案:

没有答案