1

私は少し新しい単体テストであり、Visual Studio 2012でMoqとMSTestを使用して、アプリケーションの1つのメソッドでテストを作成しようとしています。アプリケーションは正常に動作しますが、テストを実行すると、次の場合にnull参照例外が発生します。

var fooURL = Url.RouteUrl("MyApi", new { httproute = string.Empty, controller = "MyController", id = id }, Request.Url.Scheme);

ASP.NET MVC:UrlHelperを使用する単体テストコントローラーを読んで頭を包んでみましたが、これらはURL自体のテストに関係しているようです。私は自分の関数の後半で何が起こるかをテストすることにもっと関心があります。

上記のリンクに記載されているセットアップは、テストを機能させるには少なすぎますか(または多すぎますか)?それとも私は間違った方向を見ていますか?

4

1 に答える 1

0

Requestあなたのコメントによると、それはnullのようです。リクエストをモックアウトする方法については、グーグルを使用することをお勧めします。

私は個人的にNinject/Moqが大好きです。非常に使いやすく、強力な組み合わせです。あなたは次のようなことをすることができます:

  • Urlモックする必要があるもの(この場合は属性のみ)を使用してIHttpRequestインターフェイスを作成します
  • Ninjectを使用して、本番アプリ(global.asaxのapp-startイベント内)を実際のリクエストにバインドします(Kernal.Bind<IHttpRequest>().To(HttpRequest)
  • new Mock<IHttpRequest>()テストケースでは、代わりにモッククラス(またはインスタンス)にバインドする基本テストクラスまたはグローバルテスト実行クラスを用意します

HttpRequestインターフェイスに、実際のクラスから必要なメソッド/シグネチャをコピーさせる必要がある場合があります。それが機能しない場合は、インターフェイスを実装し、呼び出しを実際のHttpRequestインスタンスに委任するラッパークラスを作成する必要があります。

于 2013-03-25T18:10:05.507 に答える