方法的综合单元测试

时间:2013-04-05 17:37:31

标签: asp.net-mvc unit-testing controller moq vs-unit-testing-framework

我有一个控制器方法 - 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测试套件对该控制器进行全面的单元测试,如果需要,也可以使用Moq。

此方法的核心是来自 - GetValues(page)的检索值。

  1. 我可以编写哪些测试来对此方法进行全面的单元测试? 示例代码与测试场景一样有用。
  2. 如何使用Moq来模拟ValueRetrieverViewModel?我或者我可以将Moq用于任何其他目的吗?

1 个答案:

答案 0 :(得分:3)

以下文章非常好地详细解释了在测试控制器时应该编写的所有测试,包括何时使用模拟框架。它也很短。 http://www.arrangeactassert.com/how-to-unit-test-asp-net-mvc-controllers/

摘自文章:

  

让我先讨论一下你应该选择什么类型的单元测试   为MVC控制器创建。测试以检查正确的操作结果   从控制器操作返回。这包括有关的信息   操作结果,例如测试返回正确的视图   查看结果。

     

测试以检查视图模型是否符合预期。如果你有   强类型视图,它需要类foo并且你将类bar传递给   您的视图模型,您的代码将编译,将导致运行时   如下所示的错误。

     

如果您正在测试控制器正在执行的操作   太多了。