Laravel TDD在尝试用请求在Controller中捕获URL查询参数时忽略了它们



我想写一个测试来确保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)

最新更新