[解決済み] ASP.NET MVC: UrlHelperを使用するコントローラのユニットテスト
2022-04-23 13:23:39
質問
コントローラのアクションの1つは、Ajaxリクエストで呼び出され、リダイレクトを行うためにクライアント側にURLを返します。私は
Url.RouteUrl(..)
であり、ユニットテストでは
Controller.Url
パラメータは事前に入力されていません。
いろいろと試してみたのですが、特に
UrlHelper
(これは失敗)、手動で
UrlHelper
を持つ
RequestContext
を持つものは、スタブ付きの
HttpContextBase
(これは
RouteCollection.GetUrlWithApplicationPath
の呼び出し)。
Googleで検索してみましたが、この件に関するものはほとんど見つかりませんでした。私は、以下のような信じられないような愚かなことをしているのでしょうか?
Url.RouteUrl
をControllerアクションで使用できますか?もっと簡単な方法はないでしょうか?
さらに悪いことに、ユニットテストで返されたURLをテストできるようにしたいのです。実際、私は正しいルートにリダイレクトされていることを知りたいだけなのですが、ルートではなくURLを返しているので、解決されるURLを制御したいのです(たとえば、スタブされた
RouteCollection
) - しかし、私は最初に私のテストが通過することができれば満足です。
どのように解決するのですか?
以下は、同様のケース(コントローラで Url.RouteUrl を使用)に対する私のテスト(xUnit + Moq)の1つです。
お役に立てれば幸いです。
var routes = new RouteCollection();
MvcApplication.RegisterRoutes(routes);
var request = new Mock<HttpRequestBase>(MockBehavior.Strict);
request.SetupGet(x => x.ApplicationPath).Returns("/");
request.SetupGet(x => x.Url).Returns(new Uri("http://localhost/a", UriKind.Absolute));
request.SetupGet(x => x.ServerVariables).Returns(new System.Collections.Specialized.NameValueCollection());
var response = new Mock<HttpResponseBase>(MockBehavior.Strict);
response.Setup(x => x.ApplyAppPathModifier("/post1")).Returns("http://localhost/post1");
var context = new Mock<HttpContextBase>(MockBehavior.Strict);
context.SetupGet(x => x.Request).Returns(request.Object);
context.SetupGet(x => x.Response).Returns(response.Object);
var controller = new LinkbackController(dbF.Object);
controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
controller.Url = new UrlHelper(new RequestContext(context.Object, new RouteData()), routes);
関連
-
[解決済み] 例外がスローされたことを確認するためにAssertを使用するにはどうすればよいですか?
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVC Frameworkで複数のサブミットボタンを処理する方法は?
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] C# "internal "アクセス修飾子でユニットテストを行う場合
-
[解決済み] ASP.NET MVCのモデルでUrlHelperを呼び出す
-
[解決済み] ソートロジックは、モデル、ビュー、コントローラのいずれに配置するのがよいのでしょうか?[クローズド]
-
[解決済み] ASP.NET MVC Html.ActionLinkにアンカータグを含める
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Automapperにタイプマップの設定がない、またはマッピングがサポートされていない - エラー
-
[解決済み] Razor View throwing "The name 'model' does not exist in the current context".
-
[解決済み] MVC 3 - 辞書に渡されたモデル項目の型は 'System.Collections.Generic.List`1 です。
-
[解決済み] ルート値を含むURL.Action()
-
[解決済み] MVCにおけるViewModelとは?
-
[解決済み】Html.ActionLinkが"?Length=4 "とレンダリングされるのはなぜか?
-
[解決済み】Java Server Faces 2.0の主なデメリットは何ですか?
-
[解決済み] ASP.NET MVCにおけるセッション変数
-
[解決済み] Razorを使ってエンコードされていないJsonをViewに書き込むにはどうしたらいいですか?
-
[解決済み] エリア間のRedirectToAction?