【问题标题】:Comprehensive Unit Testing for a method方法的综合单元测试
【发布时间】:2013-04-05 17:37:31
【问题描述】:

我有一个控制器方法 - 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?我应该或可以将起订量用于这里的任何其他目的吗?

【问题讨论】:

  • 尝试全面测试一种方法往往会产生较差的投资回报率 (ROI)。我建议考虑您想要验证的内容,而不是尝试对每个案例进行单元测试。

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


【解决方案1】:

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

文章摘录:

让我首先讨论您应该进行哪些类型的单元测试 为 MVC 控制器创建。测试以检查正确的操作结果 从控制器动作返回。这包括有关信息 动作结果,如测试正确视图返回 查看结果。

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

如果您要测试的内容不止于此,您的控制器正在执行的操作 太多了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多