---
generated_at: 2026-03-01 10:30:00
metrics:
  claims_total: 180
  claims_with_evidence: 180
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：Routing単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各テストケースに対して、ソースコードの該当箇所が存在するか
2. **根拠との整合性**：テストケースの内容がソースコードの実装と矛盾していないか
3. **網羅性**：対象クラス・メソッドを適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：180 / 180、根拠なし：0
- 優先レビュー（高）
  1. 該当なし - 全テストケースにソースコード根拠あり

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `src/Illuminate/Routing/Router.php` - メインルータークラス（1529行）
- E-02: `src/Illuminate/Routing/Route.php` - ルート定義クラス（1415行）
- E-03: `src/Illuminate/Routing/RouteCollection.php` - ルートコレクション（290行）
- E-04: `src/Illuminate/Routing/UrlGenerator.php` - URL生成クラス（948行）
- E-05: `src/Illuminate/Routing/Redirector.php` - リダイレクト処理クラス（262行）
- E-06: `src/Illuminate/Routing/ResourceRegistrar.php` - リソースルート登録（739行）
- E-07: `src/Illuminate/Routing/RouteGroup.php` - ルートグループ属性マージ（105行）
- E-08: `src/Illuminate/Routing/RouteBinding.php` - ルートバインディング（88行）
- E-09: `src/Illuminate/Routing/MiddlewareNameResolver.php` - ミドルウェア名解決（85行）
- E-10: `src/Illuminate/Routing/RouteParameterBinder.php` - パラメータバインダー（116行）
- E-11: `src/Illuminate/Routing/ControllerDispatcher.php` - コントローラディスパッチャー（82行）
- E-12: `src/Illuminate/Routing/RouteAction.php` - ルートアクションパーサー（111行）
- E-13: `src/Illuminate/Routing/SortedMiddleware.php` - ミドルウェアソート（129行）
- E-14: `src/Illuminate/Routing/RouteUri.php` - URIパーサー（61行）
- E-15: `src/Illuminate/Routing/RouteUrlGenerator.php` - ルートURL生成（460行）
- E-16: `src/Illuminate/Routing/Matching/UriValidator.php` - URIバリデータ（23行）

## 3) Claims と根拠の対応（レビューの主戦場）

### Router クラス（UT-ROU-001 - UT-ROU-038）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Router.__constructでRouteCollectionが初期化される | E-01 L144-149 | ○ |
| C-02 | get()でGET/HEADルートが登録される | E-01 L158-161 | ○ |
| C-03 | post()でPOSTルートが登録される | E-01 L169-173 | ○ |
| C-04 | put()でPUTルートが登録される | E-01 L179-184 | ○ |
| C-05 | patch()でPATCHルートが登録される | E-01 L190-195 | ○ |
| C-06 | delete()でDELETEルートが登録される | E-01 L201-209 | ○ |
| C-07 | options()でOPTIONSルートが登録される | E-01 L215-221 | ○ |
| C-08 | any()で全HTTPメソッドルートが登録される | E-01 L229-233 | ○ |
| C-09 | match()で指定メソッドルートが登録される | E-01 L306-309 | ○ |
| C-10 | fallback()でフォールバックルートが登録される | E-01 L241-248 | ○ |
| C-11 | redirect()でリダイレクトルートが登録される | E-01 L258-263 | ○ |
| C-12 | permanentRedirect()で301リダイレクトが登録される | E-01 L272-275 | ○ |
| C-13 | view()でビュールートが登録される | E-01 L287-296 | ○ |
| C-14 | group()でルートグループが作成される | E-01 L471-486 | ○ |
| C-15 | ネストされたグループがマージされる | E-01 L494-501, E-07 L17-36 | ○ |
| C-16 | resource()でリソースルートが登録される | E-01 L347-358, E-06 L79-136 | ○ |
| C-17 | apiResource()でAPIリソースルートが登録される | E-01 L382-393 | ○ |
| C-18 | singleton()でシングルトンリソースが登録される | E-01 L417-428, E-06 L146-199 | ○ |
| C-19 | dispatch()でリクエストがディスパッチされる | E-01 L749-753 | ○ |
| C-20 | dispatch()でルート不存在時に例外がスローされる | E-03 L175-185 | ○ |
| C-21 | aliasMiddleware()でエイリアスが登録される | E-01 L1043-1048 | ○ |
| C-22 | middlewareGroup()でグループが登録される | E-01 L1078-1083 | ○ |
| C-23 | prependMiddlewareToGroup()で先頭追加される | E-01 L1094-1101 | ○ |
| C-24 | pushMiddlewareToGroup()で末尾追加される | E-01 L1112-1123 | ○ |
| C-25 | removeMiddlewareFromGroup()で削除される | E-01 L1132-1149 | ○ |
| C-26 | bind()でパラメータバインダーが登録される | E-01 L1170-1175 | ○ |
| C-27 | model()でモデルバインダーが登録される | E-01 L1185-1188 | ○ |
| C-28 | substituteBindings()でパラメータが置換される | E-01 L958-967 | ○ |
| C-29 | pattern()でグローバルパターンが登録される | E-01 L1220-1223 | ○ |
| C-30 | has()で名前付きルート存在確認ができる | E-01 L1306-1317 | ○ |
| C-31 | has()で存在しないルートでfalseが返る | E-01 L1306-1317 | ○ |
| C-32 | currentRouteName()で現在ルート名が取得できる | E-01 L1324-1327 | ○ |
| C-33 | currentRouteAction()で現在アクションが取得できる | E-01 L1356-1361 | ○ |
| C-34 | prepareResponse()でレスポンスが準備される | E-01 L902-909 | ○ |
| C-35 | toResponse()でResponsableが変換される | E-01 L918-947 | ○ |
| C-36 | toResponse()で配列がJsonResponseになる | E-01 L930-937 | ○ |
| C-37 | toResponse()でModelがJsonResponseになる | E-01 L926-928 | ○ |
| C-38 | uniqueMiddleware()で重複が除去される | E-01 L1472-1487 | ○ |

### Route クラス（UT-ROU-039 - UT-ROU-076）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | Route.__constructでインスタンスが生成される | E-02 L174-185 | ○ |
| C-40 | GETメソッドにHEADが自動追加される | E-02 L180-182 | ○ |
| C-41 | run()でClosureが実行される | E-02 L205-218, L235-244 | ○ |
| C-42 | run()でコントローラが実行される | E-02 L263-268 | ○ |
| C-43 | run()でHttpResponseExceptionが処理される | E-02 L215-217 | ○ |
| C-44 | matches()でリクエストがマッチする | E-02 L340-355 | ○ |
| C-45 | matches()でリクエストがマッチしない | E-02 L340-355 | ○ |
| C-46 | bind()でパラメータがバインドされる | E-02 L377-387 | ○ |
| C-47 | parameter()でパラメータ値が取得できる | E-02 L421-424 | ○ |
| C-48 | parameter()でデフォルト値が返る | E-02 L421-424 | ○ |
| C-49 | parameters()でバインド前例外がスローされる | E-02 L472-479 | ○ |
| C-50 | setParameter()でパラメータが設定される | E-02 L445-450 | ○ |
| C-51 | forgetParameter()でパラメータが削除される | E-02 L458-463 | ○ |
| C-52 | where()でパラメータ制約が設定される | E-02 L658-665 | ○ |
| C-53 | where()で配列制約が設定される | E-02 L658-665 | ○ |
| C-54 | name()でルート名が設定される | E-02 L896-905 | ○ |
| C-55 | name()で既存名に追加される | E-02 L902 | ○ |
| C-56 | named()でパターンマッチする | E-02 L913-926 | ○ |
| C-57 | named()でパターンマッチしない | E-02 L913-926 | ○ |
| C-58 | middleware()でミドルウェアが追加される | E-02 L1072-1091 | ○ |
| C-59 | middleware()で複数ミドルウェアが追加される | E-02 L1078-1088 | ○ |
| C-60 | withoutMiddleware()で除外される | E-02 L1173-1180 | ○ |
| C-61 | gatherMiddleware()でミドルウェアが収集される | E-02 L1053-1064 | ○ |
| C-62 | domain()でドメインが設定される | E-02 L767-786 | ○ |
| C-63 | domain()でBackedEnumエラー | E-02 L773-775 | ○ |
| C-64 | prefix()でプレフィックスが追加される | E-02 L816-825 | ○ |
| C-65 | defaults()でデフォルト値が設定される | E-02 L631-636 | ○ |
| C-66 | fallback()でフラグが設定される | E-02 L699-704 | ○ |
| C-67 | secure()でHTTPS判定される | E-02 L754-757 | ○ |
| C-68 | httpOnly()でHTTP判定される | E-02 L734-737 | ○ |
| C-69 | scopeBindings()で有効化される | E-02 L1197-1202 | ○ |
| C-70 | withTrashed()で有効化される | E-02 L607-612 | ○ |
| C-71 | block()でセッションロックが設定される | E-02 L1243-1249 | ○ |
| C-72 | getController()でインスタンスが取得できる | E-02 L277-290 | ○ |
| C-73 | getController()でClosureでnull | E-02 L279-281 | ○ |
| C-74 | can()で認可ミドルウェアが追加される | E-02 L1100-1107 | ○ |
| C-75 | toSymfonyRoute()でSymfonyルートに変換される | E-02 L1322-1329 | ○ |
| C-76 | prepareForSerialization()でシリアライズ準備される | E-02 L1386-1403 | ○ |

### RouteCollection クラス（UT-ROU-077 - UT-ROU-088）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-77 | add()でルートが追加される | E-03 L44-51 | ○ |
| C-78 | add()で名前付きルートがnameListに追加される | E-03 L77-84 | ○ |
| C-79 | match()でマッチするルートが返る | E-03 L175-185 | ○ |
| C-80 | match()で404例外がスローされる | E-03 L175-185 | ○ |
| C-81 | match()で405例外がスローされる | E-03 L175-185 (AbstractRouteCollection) | ○ |
| C-82 | getByName()で名前でルートが取得できる | E-03 L215-218 | ○ |
| C-83 | getByName()で存在しない名前でnull | E-03 L215-218 | ○ |
| C-84 | getByAction()でアクションでルートが取得できる | E-03 L226-229 | ○ |
| C-85 | hasNamedRoute()で存在確認ができる | E-03 L204-207 | ○ |
| C-86 | refreshNameLookups()で名前リストが更新される | E-03 L137-146 | ○ |
| C-87 | get()でメソッド別ルートが取得できる | E-03 L193-196 | ○ |
| C-88 | get()で全ルートが取得できる | E-03 L193-196 | ○ |

### UrlGenerator クラス（UT-ROU-089 - UT-ROU-115）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-89 | UrlGenerator.__constructでインスタンスが生成される | E-04 L128-134 | ○ |
| C-90 | to()でパスから絶対URLが生成される | E-04 L208-231 | ○ |
| C-91 | to()で追加パラメータがURLに含まれる | E-04 L217-218 | ○ |
| C-92 | to()で有効なURLはそのまま返る | E-04 L213-215 | ○ |
| C-93 | secure()でHTTPS URLが生成される | E-04 L260-263 | ○ |
| C-94 | route()で名前付きルートURLが生成される | E-04 L513-529 | ○ |
| C-95 | route()で存在しないルートで例外 | E-04 L528 | ○ |
| C-96 | route()でBackedEnumエラー | E-04 L515-517 | ○ |
| C-97 | action()でコントローラアクションURLが生成される | E-04 L558-565 | ○ |
| C-98 | action()で存在しないアクションで例外 | E-04 L561 | ○ |
| C-99 | signedRoute()で署名付きURLが生成される | E-04 L358-379 | ○ |
| C-100 | signedRoute()で有効期限付きURLが生成される | E-04 L364-366 | ○ |
| C-101 | signedRoute()で予約パラメータエラー | E-04 L389-402 | ○ |
| C-102 | hasValidSignature()で有効署名が検証される | E-04 L426-430 | ○ |
| C-103 | hasValidSignature()で無効署名でfalse | E-04 L452-488 | ○ |
| C-104 | hasValidSignature()で期限切れでfalse | E-04 L496-501 | ○ |
| C-105 | asset()でアセットURLが生成される | E-04 L272-284 | ○ |
| C-106 | secureAsset()でHTTPSアセットURLが生成される | E-04 L292-295 | ○ |
| C-107 | current()で現在URLが取得できる | E-04 L151-154 | ○ |
| C-108 | full()で完全URLが取得できる | E-04 L141-144 | ○ |
| C-109 | previous()で前のURLが取得できる | E-04 L162-175 | ○ |
| C-110 | previous()でセッションから取得される | E-04 L195-198 | ○ |
| C-111 | forceScheme()でスキームが強制される | E-04 L724-729 | ○ |
| C-112 | forceRootUrl()でルートURLが強制される | E-04 L763-768 | ○ |
| C-113 | isValidUrl()で有効URLでtrue | E-04 L674-681 | ○ |
| C-114 | isValidUrl()で相対パスでfalse | E-04 L674-681 | ○ |
| C-115 | isValidUrl()でmailto:でtrue | E-04 L676 | ○ |

### Redirector クラス（UT-ROU-116 - UT-ROU-129）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-116 | Redirector.__constructでインスタンスが生成される | E-05 L32-35 | ○ |
| C-117 | to()でリダイレクトレスポンスが生成される | E-05 L111-114 | ○ |
| C-118 | to()でカスタムステータスコードが使用される | E-05 L111 | ○ |
| C-119 | back()で前ページへリダイレクトされる | E-05 L45-48 | ○ |
| C-120 | back()でフォールバックが使用される | E-05 L45-48 | ○ |
| C-121 | refresh()で現在ページへリダイレクトされる | E-05 L57-60 | ○ |
| C-122 | route()で名前付きルートへリダイレクトされる | E-05 L151-154 | ○ |
| C-123 | action()でコントローラアクションへリダイレクトされる | E-05 L195-198 | ○ |
| C-124 | away()で外部URLへリダイレクトされる | E-05 L124-127 | ○ |
| C-125 | secure()でHTTPSリダイレクトされる | E-05 L137-140 | ○ |
| C-126 | guest()で現在URLが保存される | E-05 L71-84 | ○ |
| C-127 | intended()で意図URLへリダイレクトされる | E-05 L95-100 | ○ |
| C-128 | intended()でデフォルトへリダイレクトされる | E-05 L97 | ○ |
| C-129 | signedRoute()で署名付きリダイレクトされる | E-05 L166-169 | ○ |

### ResourceRegistrar クラス（UT-ROU-130 - UT-ROU-139）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-130 | register()でリソースルートが登録される | E-06 L79-136 | ○ |
| C-131 | register()でonlyオプションが適用される | E-06 L274-276 | ○ |
| C-132 | register()でexceptオプションが適用される | E-06 L278-280 | ○ |
| C-133 | register()でネストリソースが登録される | E-06 L88-92, L599-607 | ○ |
| C-134 | singleton()でシングルトンが登録される | E-06 L146-199 | ○ |
| C-135 | singleton()でcreatableオプションが適用される | E-06 L163-167 | ○ |
| C-136 | getResourceWildcard()で単数形変換される | E-06 L615-626 | ○ |
| C-137 | getResourceWildcard()でカスタムマッピングが適用される | E-06 L617-620 | ○ |
| C-138 | verbs()で動詞が取得できる | E-06 L731-738 | ○ |
| C-139 | verbs()で動詞がカスタマイズできる | E-06 L737 | ○ |

### その他クラス（UT-ROU-140 - UT-ROU-180）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-140 | RouteGroup.merge()でプレフィックスがマージされる | E-07 L17-36 | ○ |
| C-141 | RouteGroup.merge()でnamespaceがマージされる | E-07 L45-54 | ○ |
| C-142 | RouteGroup.merge()でasがマージされる | E-07 L97-104 | ○ |
| C-143 | RouteGroup.merge()でwhereがマージされる | E-07 L82-88 | ○ |
| C-144 | RouteGroup.merge()でdomainが上書きされる | E-07 L19-21 | ○ |
| C-145 | RouteBinding.forCallback()でClosureが返る | E-08 L18-25 | ○ |
| C-146 | RouteBinding.forCallback()でクラスバインディングが作成される | E-08 L34-46 | ○ |
| C-147 | RouteBinding.forModel()でモデルバインダーが作成される | E-08 L58-87 | ○ |
| C-148 | RouteBinding.forModel()でnull値でnull | E-08 L61-63 | ○ |
| C-149 | RouteBinding.forModel()でモデル不存在例外 | E-08 L85 | ○ |
| C-150 | RouteBinding.forModel()でコールバックが使用される | E-08 L81-83 | ○ |
| C-151 | MiddlewareNameResolver.resolve()でClosureが返る | E-09 L22-24 | ○ |
| C-152 | MiddlewareNameResolver.resolve()でエイリアスが解決される | E-09 L40-42 | ○ |
| C-153 | MiddlewareNameResolver.resolve()でパラメータ付きが解決される | E-09 L40-42 | ○ |
| C-154 | MiddlewareNameResolver.resolve()でグループが展開される | E-09 L33-35 | ○ |
| C-155 | MiddlewareNameResolver.resolve()でネストグループが展開される | E-09 L61-67 | ○ |
| C-156 | RouteParameterBinder.parameters()でパスパラメータがバインドされる | E-10 L32-46 | ○ |
| C-157 | RouteParameterBinder.parameters()でホストパラメータがバインドされる | E-10 L39-43 | ○ |
| C-158 | RouteParameterBinder.parameters()でデフォルト値が適用される | E-10 L102-115 | ○ |
| C-159 | ControllerDispatcher.dispatch()でコントローラが実行される | E-11 L38-47 | ○ |
| C-160 | ControllerDispatcher.dispatch()でcallActionが呼び出される | E-11 L42-44 | ○ |
| C-161 | ControllerDispatcher.getMiddleware()でミドルウェアが取得される | E-11 L71-81 | ○ |
| C-162 | ControllerDispatcher.getMiddleware()でフィルタされる | E-11 L78 | ○ |
| C-163 | RouteAction.parse()でnullアクションでデフォルトClosure | E-12 L25-27 | ○ |
| C-164 | RouteAction.parse()でClosureがuses属性に設定される | E-12 L32-37 | ○ |
| C-165 | RouteAction.parse()で配列アクションが変換される | E-12 L33-36 | ○ |
| C-166 | RouteAction.parse()でinvokableが変換される | E-12 L46-48, L89-96 | ○ |
| C-167 | RouteAction.parse()で不正invokableで例外 | E-12 L91-93 | ○ |
| C-168 | SortedMiddleware.__constructで優先度ソートされる | E-13 L33-64 | ○ |
| C-169 | SortedMiddleware.__constructで位置維持される | E-13 L37-40 | ○ |
| C-170 | SortedMiddleware.__constructで重複除去される | E-13 L63 | ○ |
| C-171 | RouteUri.parse()で通常URIがパースされる | E-14 L39-60 | ○ |
| C-172 | RouteUri.parse()でバインディングフィールドがパースされる | E-14 L45-57 | ○ |
| C-173 | RouteUri.parse()でオプショナルがパースされる | E-14 L41, L54-56 | ○ |
| C-174 | RouteUrlGenerator.to()でルートURLが生成される | E-15 L78-113 | ○ |
| C-175 | RouteUrlGenerator.to()で相対URLが生成される | E-15 L102-110 | ○ |
| C-176 | RouteUrlGenerator.to()でパラメータ不足で例外 | E-15 L93-95 | ○ |
| C-177 | RouteUrlGenerator.to()でクエリパラメータが追加される | E-15 L379-424 | ○ |
| C-178 | RouteUrlGenerator.defaults()でデフォルトが設定される | E-15 L454-459 | ○ |
| C-179 | UriValidator.matches()でURIがマッチする | E-16 L17-22 | ○ |
| C-180 | UriValidator.matches()でURIがマッチしない | E-16 L17-22 | ○ |

## 4) 不足情報（Unknown / Missing）
- 該当なし - 全テストケースに対応するソースコード根拠が確認されました。

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全テストケースがソースコードに基づいて生成されています。
- 特記事項：
  - Routingモジュールはフレームワークの中核コンポーネントであり、実際のテスト実装時はモック/スタブの適切な使用が必要
  - 一部のテストケースはHTTP通信やセッション処理を含むため、統合テストとして実装した方が適切な場合あり

## 6) レビュアーチェックリスト（最小）
- [ ] 各テストケースのテスト観点（正常系/異常系/境界値）が適切か確認
- [ ] テストケースの優先度設定が妥当か確認
- [ ] 前提条件と入力値の組み合わせが現実的か確認
- [ ] 期待結果がソースコードの実装と一致しているか確認
- [ ] ルート登録・マッチング・URL生成の主要フローが網羅されているか確認
- [ ] ミドルウェア関連のテストケースが実行順序を考慮しているか確認
- [ ] 署名付きURL関連のテストケースがセキュリティ要件を満たしているか確認
