1

私はコントローラーメソッドを持っています -CurrentValues

[HttpGet]
public ActionResult CurrentValues(ValueRetrieverViewModel valueRetrieverModel)
{
    int page = 0;
    if(!string.IsNullOrEmpty(valueRetrieverModel.Page))
    {
        int.TryParse(valueRetrieverModel.Page, out page);
    }

    if (page <= 0) page = 1;

    var values = GetValues(page);

    if (values != null)
    {
        if (values.QueryResults.Count > 0)
        {
            ViewData["name"] = valueRetrieverModel.Name; 
            ViewData["school"] = valueRetrieverModel.School;             
            ViewData["team"] = valueRetrieverModel.Team;
        }
    }

    var valRtrvrViewModel = new ValuesViewModel
    {
        Results = values,  
        InputParms = valueRetrieverModel
    };

    return View("CurrentValues", searchViewModel);
}

MS-VS-Unit Test Suite を利用し、必要に応じて Moq も使用して、このコントローラーを包括的に単体テストしたいと思います。

このメソッドの核となるのは、 - から取得した値ですGetValues(page)

  1. このメソッドの包括的な単体テストを行うために作成できるテストは何ですか? サンプル コードは、テスト シナリオと共に役立ちます。
  2. Moq を使用して ValueRetrieverViewModel をモックする方法は? ここで特に他の目的に Moq を使用する必要がありますか、または使用できますか?
4

1 に答える 1

3

次の記事は、モッキング フレームワークをいつ使用するかなど、コントローラーをテストするときに作成する必要があるすべてのテストを詳細に説明するのに優れています。こちらも短いです。 http://www.arrangeactassert.com/how-to-unit-test-asp-net-mvc-controllers/

記事からの抜粋:

MVC コントローラー用に作成する必要がある単体テストの種類について説明することから始めましょう。コントローラ アクションから正しいアクション結果が返されることを確認するテスト。これには、ビューの結果に対して正しいビューが返されるかどうかのテストなど、アクションの結果に関する情報が含まれます。

ビュー モデルが期待どおりかどうかをテストします。クラス foo を期待する厳密に型指定されたビューがあり、ビュー モデルにクラス bar を渡すと、コードがコンパイルされ、以下に示すような実行時エラーが発生します。

これ以上のものをテストしている場合、コントローラーはやりすぎです。

于 2013-04-05T17:54:50.863 に答える