2020/09/11 追記: 別の方法 に変更しました。
sample
final class XxxxRouterTest extends TestCase
{
public function RouteActionNameDataProvider()
{
return [
[
'get',
'/user/1', //テスト対象のURL
UserViewController::class, //URLをリクエストした際に、期待されるアクション名
'user.view' //URLをリクエストした際に、期待されるルート名
],
[
'post',
'/user/add',
UserAddController::class,
'user.add'
],
];
}
/**
* @dataProvider RouteActionNameDataProvider
* @param $method
* @param $url
* @param $expectedActionName
* @param $expectedRouteName
*/
public function testRouteActionName(
$method,
$url,
$expectedActionName,
$expectedRouteName
) {
// 特定のテストでのみミドルウェアを無効化
$this->withoutMiddleware();
switch ($method) {
case 'post':
$this->post($url);
break;
case 'get':
$this->get($url);
break;
default:
$this->get($url);
}
$this->assertEquals($expectedRouteName, Route::currentRouteName());
$this->assertEquals($expectedActionName, Route::currentRouteAction());
}