• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Asp.netmvc+Ajax+Extjs+NHibernate系列之单元测试

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
概述
使用单元测试框架,Nunit。包括对controller的测试,以及moq框架的使用。
详解
1,数据库层Service的单元测试

 

引入:using NUnit.Framework;

    [TestFixture]
    
public class SystemConfigServiceTest
    {

        [Test]
        
public void GetByIdTest()
        {
            SystemConfig configExcept 
= new SystemConfig();
            configExcept.PkId 
= 78;
            SystemConfig configActual 
= new SystemConfigService().GetById(78);
            Assert.AreEqual(configExcept.PkId, configActual.PkId,
"插叙编号为78的,如果测试不通过,请检查");
        }
    }

 


 类的特性标记为 TestFixture,要测试的方法特性标记为:Test,初始化测试对象,出入参数,判断返回值与你预期的值的比较。

这种测试是比较简单的单元测试。

2,Controller的单元测试

Moq 的介绍比较多http://www.cnblogs.com/haoliansheng/archive/2010/04/27/1721816.html

 

        [Test]
        
public void IndexFirstTest()
        {
            SystemConfigController controller 
= new SystemConfigController();

            var httpContext 
= new Mock<HttpContextBase>();
            var request 
= new Mock<HttpRequestBase>();
            NameValueCollection queryString 
= new NameValueCollection();
            queryString.Add(
"currentIndex""1");
            request.Setup(r 
=> r.QueryString).Returns(queryString);
            httpContext.Setup(ht 
=> ht.Request).Returns(request.Object);

            ControllerContext controllerContext 
= new ControllerContext();
            controllerContext.HttpContext 
= httpContext.Object;

            controller.ControllerContext 
= controllerContext;

            
//当前为19条记录,总共有4页

            
//第一页为5条记录
            
//Act
            ViewResult result1 = controller.Index(1nullas ViewResult;

            
//Assert
            ViewDataDictionary viewData1 = result1.ViewData;
            List
<SystemConfig> model1 = viewData1.Model as List<SystemConfig>;
            
//Assert.AreEqual(1, viewData1["CurrendIndex"],"单元测试的当前页为 ,第一页");
            Assert.AreEqual(5, model1.Count, "第一页的长度应该为5,错误有可能是没有数据");
        }

 

  一个测试方法,

            var httpContext = new Mock<HttpContextBase>();

            var request = new Mock<HttpRequestBase>();

初始化两个对象,moq其实就是模拟两个对象。用他们来进行上下文的操作。

request.Setup(r => r.QueryString).Returns(queryString);初始化的过程

  //第一页为5条记录

            //Act

            ViewResult result1 = controller.Index(1, null) as ViewResult;

然后controller直接执行方法就可以了,在判断执行后的结果与预期的。

        [Test]
        
public void Index0Test()
        {
            SystemConfigController controller 
= new SystemConfigController();

            var httpContext 
= new Mock<HttpContextBase>();
            var request 
= new Mock<HttpRequestBase>();
            NameValueCollection queryString 
= new NameValueCollection();
            queryString.Add(
"currentIndex""0");
            request.Setup(r 
=> r.QueryString).Returns(queryString);
            httpContext.Setup(ht 
=> ht.Request).Returns(request.Object);

            ControllerContext controllerContext 
= new ControllerContext();
            controllerContext.HttpContext 
= httpContext.Object;

            controller.ControllerContext 
= controllerContext;

            
//第0页五条数据
            ViewResult result3 = controller.Index(0nullas ViewResult;

            ViewDataDictionary viewData3 
= result3.ViewData;
            List
<SystemConfig> model3 = viewData3.Model as List<SystemConfig>;
            
//Assert.AreEqual(0, viewData3["CurrendIndex"]);
            Assert.AreEqual(5, model3.Count);
        }

 

技术要点

controller测试,moq框架的使用。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap