我想写一个测试来确定我的URL中的查询参数是否正常。但是每当我做一个 request()->all()
我得到了一个空数组。
这是我的测试部分。
public function test_it_should_paginate_the_results_when_perPage_query_is_used()
{
// Given
factory('App\Order', 17)->create();
// When
// $request = $this->call('GET', route('api.orders.index'), ['perPage' => '5']);
// $request = $this->call('GET', route('api.orders.index') . '?perPage=5', ['perPage' => '5']);
$request = $this->get(route('api.orders.index') . '?perPage=5');
// Then
$request->assertJsonCount(5);
}
这里是OrderController的基本方法:
public function index()
{
dd(request()->all());
$orders = Order::all();
return $orders;
}
我错过了什么吗?
我忘了说,它在浏览器中获取参数,但在PHPUnit测试工具中没有。
更新后的问题
所以我发现了一个问题。当你用 php artisan test
命令。只有当你使用 phpunit
命令。
不知道为什么。
你可以将数据作为第二个参数传递给 route()
或作为第三个论据,以 call()
:
$request = $this->get(route('api.orders.index', ['perPage' => 5]));
$request = $this->call('GET', route('api.orders.index', ['perPage' => 5]));
$request = $this->call('GET', route('api.orders.index'), ['perPage' => 5]);
以下是定义:
function route($name, $parameters = [], $absolute = true)
public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)