当Laravel TDD试图在Controller中捕获URL查询参数时, 忽略了URL查询参数的请求.

问题描述 投票:0回答:1

我想写一个测试来确定我的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 命令。

不知道为什么。

php laravel tdd
1个回答
0
投票

你可以将数据作为第二个参数传递给 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)
© www.soinside.com 2019 - 2024. All rights reserved.