したいこと
PHPUnitでパスパラメータとクエリパラメータを両方渡したい
前提
ルーティングとコントローラーは適当です。
ルーティング
Route::get('/user/{user_id}/{hogehoge}', [UserController::class, 'show'])->name('user.fugafuga');
コントローラー
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\User;
class UserController extends Controller
{
/**
* 指定ユーザーのプロファイルを表示
*
* @param int $id
* @return \Illuminate\View\View
*/
public function show($userId, $hogehoge, $queryParameters)
{
return view('user.profile', [
'user' => User::findOrFail($id)
]);
}
}
解決
テスト
$queryParameters = [
'name' => '太郎',
'age' => 18
];
$response = $this->get(route(user.fugafuga, [
'user_id' => 1,
'hogehoge' => 'aiueo',
...$queryParameters
]));
このテストで発行されるURL(一部省略)は以下
URL
.../user/1/aiueo?name=太郎&age=18
まとめ
解決してみると意外と簡単な書き方だった。
備忘録も兼ねて記事に残しておく。