9

HttpContextにアクセスせずにRouteCollectionからURLを生成できるようにしたいと思います。RouteCollectionの実装方法を見ると、すべてのメソッドは、仮想パスを取得するためにRequestContextにアクセスする必要があります。

私はHttpContextをモックすることでこれを回避しましたが、これはRhinoMocksへの厄介な依存関係を追加し、合理的な解決策ではありません。コンテキスト外でURLを生成するための他のオプションはありますか?

4

2 に答える 2

3

確かに素晴らしい質問です。ルーティング自体は、実行中の ASP.NET アプリケーションからの呼び出しに依存します。たとえば、アプリケーション ルート URL の取得や、URL にも含まれる Cookie のないフォームやセッション Cookie の取得などです。モック オブジェクトを作成することは理論上の解決策ですが、実行時に使用することはお勧めできません。

この状況ではルーティングをまったく使用せず、URL を電子メールにハードコーディングすることをお勧めします。電子メール内のリンクには完全修飾 URL (ホスト名 + パス) が必要であり、ルーティングでは URL のホスト名を生成することさえできないため、既にハードコーディングする必要があるものです。

于 2009-12-30T20:09:41.690 に答える
1

申し訳ありませんが、MVC フレームワークでのモックに慣れてください。テストに入るとすぐに、それが必要になります。そこにはたくさんあります: HttpContext、Session、Server - コントローラーに漏れるすべてのもの。パスを生成したい場合は、HttpContext と対話する必要があります (MVC では、これは実際には HttpContextBase であるため、独自の具体的な実装を作成できると思います)、またはそれをモックする必要があります。

于 2009-12-18T22:36:16.333 に答える