0

たとえば、Mvc3コントローラー用のモック(Moqを使用)セットアップがあります。

[TestMethod]
public void Step_One_Post_Should_Redirect_To_Step_Two()
{
    // this test checks that when I submit a type parameter of StepOneModel and
    // the next button was clicked Request["next"] ,  then goto Step Two
}

このテストの実行を停止する唯一のことは、コントローラーから呼び出された Save メソッドです。これは、このテスト コンテキストのセッションで値が適切に設定されていないため失敗します。本当に、この単体テストからこのデータベース呼び出しを省略したいと思います。

基本的に、コントローラーアクションから Save(model) 呼び出しを停止/モックするにはどうすればよいですか?

[HttpPost]
public ActionResult Index(IStepViewModel step)
{
    // after model is deserialized
    if (!string.IsNullOrEmpty(Request["next"]))
    {
        Save(model)  <-- the bit blocking me
    }

    return View(model)  <-- the bit I want to assert against
}
4

1 に答える 1

1

優れたライブラリMvcContrib-test helpersを使用することをお勧めします

箱から出してモックセッションを提供します。

一般的な概念

新しい MVC.Net フレームワークの主な利点の 1 つは、簡単にテストできることです。これは一般的に正しいことですが、フレームワークのテストが困難になる領域がいくつかあります。TestHelper は、内部データ メンバーが正しく初期化されたコントローラーを作成するコントローラー ファクトリを提供することで支援します。これらには以下が含まれます:

  • HttpContext
  • HttpRequest
  • HttpResponse
  • HttpSession <--------------------------------------
  • 温度データ
  • クエリ文字列
  • アプリケーションパス
  • パス情報
于 2012-11-19T21:32:43.350 に答える