我想写一个测试来确保URL中的查询参数工作正常。但每当我执行request()->all()
时,我都会得到一个空数组。
这是我的测试部分:
public function test_it_should_paginate_the_results_when_perPage_query_is_used()
{
// Given
factory('AppOrder', 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)