为ASP.NET MVC应用程序创建单元测试

发表于:2009-12-16 15:50

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:cobra(pin5i)    来源:51Testing软件测试网采编

  本教程的目的是解释如何为 ASP.NET MVC 应用程序中的控制器编写单元测试。我们将讨论如何创建三种不同类型的单元测试。您将了解如何测试控制器操作返回的视图、如何测试控制器操作返回的视图数据,以及如何测试一个控制器操作是否重定向到另一个控制器操作。

  创建测试控制器

  我们首先创建要测试的控制器。程序清单 1 中包含名称为 ProductController 的控制器。

  程序清单 1 ProductController.cs

using System;
using System.Web.Mvc;

namespace Store.Controllers
{
    public class ProductController : Controller
    {
          public ActionResult Index()
          {
              // Add action logic here
              throw new NotImplementedException();
          }

          public ActionResult Details(int Id)
          {
              return View("Details");
          }
    }
}

  HomeController 包含两个操作方法,名称为 Index() 和 Details()。两个操作方法都返回一个视图。请注意, Details() 操作接受名称为 Id 的参数。

  测试控制器返回的视图

  假设要测试 ProductController 是否返回正确的视图。希望确保当激活 ProductController.Details() 操作时,返回 Details 视图。程序清单 2 中的测试类包含一个单元测试,用于测试由 ProductController.Details() 操作返回的视图。

  程序清单 2 ProductControllerTest.cs

using System.Web.Mvc;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Store.Controllers;

namespace StoreTests.Controllers
{
    [TestClass]
    public class ProductControllerTest
    {
          [TestMethod]
          public void TestDetailsView()
          {
              var controller = new ProductController();
              var result = controller.Details(2) as ViewResult;
              Assert.AreEqual("Details", result.ViewName);
          }
    }
}

  程序清单 2 中的类包含名称为 TestDetailsView() 的测试方法。此方法包括三行代码。第一行代码创建一个 ProductController 类的新实例。第二行代码激活控制器的 Details() 操作方法。最后一行代码检查 Details() 操作返回的是否是 Details 视图。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号