getRouteCollector()->getRoutes() as $route) { $pattern = $route->getPattern(); $methods = array_values(array_diff($route->getMethods(), ['HEAD', 'OPTIONS'])); $actual[$pattern] ??= []; $actual[$pattern] = array_values(array_unique(array_merge($actual[$pattern], $methods))); sort($actual[$pattern]); } ksort($actual); $expected = [ '/' => ['GET'], '/account/password' => ['GET', 'POST'], '/admin' => ['GET'], '/admin/categories' => ['GET'], '/admin/categories/create' => ['POST'], '/admin/categories/delete/{id}' => ['POST'], '/admin/media' => ['GET'], '/admin/media/delete/{id}' => ['POST'], '/admin/media/upload' => ['POST'], '/admin/posts' => ['GET'], '/admin/posts/create' => ['POST'], '/admin/posts/delete/{id}' => ['POST'], '/admin/posts/edit/{id}' => ['GET', 'POST'], '/admin/users' => ['GET'], '/admin/users/create' => ['GET', 'POST'], '/admin/users/delete/{id}' => ['POST'], '/admin/users/role/{id}' => ['POST'], '/article/{slug}' => ['GET'], '/auth/login' => ['GET', 'POST'], '/auth/logout' => ['POST'], '/password/forgot' => ['GET', 'POST'], '/password/reset' => ['GET', 'POST'], '/rss.xml' => ['GET'], ]; foreach ($expected as $pattern => $methods) { sort($methods); } ksort($expected); self::assertSame($expected, $actual); } }