当前位置: 首页 > news >正文

网站资源做外链/seo公司 引擎

网站资源做外链,seo公司 引擎,公司进门logo形象墙,国内免费云服务器我们在做单元测试的时候,常常困扰于数据的持久化问题,很多情况下我们不希望单元测试影响到数据库中的内容,而且受数据库的影响有时我们的单元测试的速度会很慢,所以我们往往希望将持久化部分隔离开,做单元测试的时候不…

我们在做单元测试的时候,常常困扰于数据的持久化问题,很多情况下我们不希望单元测试影响到数据库中的内容,而且受数据库的影响有时我们的单元测试的速度会很慢,所以我们往往希望将持久化部分隔离开,做单元测试的时候不真正的将数据持久化。这种隔离我们一般使用抽象的方式,也就是利用接口或抽象类将持久化层隔离开,然后利用mock来模拟相应的接口或抽象类来完成相应的持久化类。MoQ就是这种Mock框架之一,MoQ使用了C#3.0,跟NMock相比MoQ使用起来更简单,而且是强类型的方式的,源码和dll可以到http://code.google.com/p/moq/下载。现在MoQ最新的发布版本是3.1版,4.0还处在beta版中,所以我们这里使用的是3.1版。

下面我们就来介绍一下MoQ的具体用法:

一、基础知识

在使用MoQ之前我们必须要先在测试程序中引入Moq.dll,使用MoQ的主要命名空间是Moq,其中最重的类就是Mock<T>,我们可以用这个类来模拟接口。

1、方法

   public interface ITest
    {
        
string Test();
    }

测试代码:

 

ContractedBlock.gif简单测试代码

 

2、匹配参数

 

 public interface IMatchTest
    {
        
string Test(int test);
    }

 

ContractedBlock.gif匹配测试

 上边测试代码模拟实现IMathTest接口实例,其中如果Test方法的参数是偶数,其返回值为“偶数”。这里的IT用来过滤参数的类,其具体解释可以参见MoQ的文档

3、属性
 public interface IPropertiesTest
    {
         
int Test { getset; }
    }

 

            var testProperties = new Mock<IPropertiesTest>();
            testProperties.Setup(p 
=> p.Test).Returns(1);
            Assert.AreEqual(
1, testProperties.Object.Test);

或者

var testProperties = new Mock<IPropertiesTest>();
            testProperties.SetupProperty(p 
=> p.Test,1);
            Assert.AreEqual(
1, testProperties.Object.Test);

 

4、Callback

当执行某方法时调用其内部输入的Action委托

 

ContractedBlock.gifCallback

 

在调用Test方法是执行了count++

5、Verification

判断某方法或属性是否执行过

如果代码如下:

 

ContractedBlock.gifCode

 

会抛出异常,因为第3行执行时Test方法还没有被调用过,改为如下代码可以通过测试

 

ContractedBlock.gifCode

其他细节可以查看MoQ文档。

二、应用

先创建一个Account类:

创建一个数据库Provider接口:

 

   public interface ITransferProvider
    {

        
void TransferTo(Account accountFrom, Account accountTo);

    }

 

然后创建转账处理类:

 

ContractedBlock.gifTransferProcess

下边我们来测试这个转账处理类:

 

ContractedBlock.gifCode

 

三、参考

http://code.google.com/p/moq/wiki/QuickStart

Beginning Mocking With Moq 3 – Part 1

Beginning Mocking With Moq 3 - Part 2

Beginning Mocking With Moq 3 - Part 3

Beginning Mocking With Moq 3 - Part 4

 

本文转自 你听海是不是在笑 博客园博客,原文链接:http://www.cnblogs.com/nuaalfm/archive/2009/11/25/1610755.html  ,如需转载请自行联系原作者

http://www.lbrq.cn/news/1810045.html

相关文章:

  • 吉林市建设官方网站/seo搜索引擎优化公司
  • 海口网站建设服务/网店推广的作用是什么
  • dw做旅游网站模板下载/谷歌搜索关键词排名
  • 网站模板资源/seo推广公司教程
  • 公司做网站需要准备什么软件/电商网站卷烟订货流程
  • 计算机网站开发论文文献引用/外贸网站建设优化推广
  • 网站备案真实核验单/南京百度快照优化排名
  • 什么网站是教做纸工的/百度搜索量排名
  • 义乌兼职网站建设/温州网站优化推广方案
  • 做水浒传有关的网站/网络营销怎么做
  • 新闻网站 内容建设/网络广告是什么
  • 阿胶在那种网站做推广好/广告推广 精准引流
  • 网站建设中标/新闻稿发布平台
  • 镇江网站搜索排名/百度seo点击软件
  • 政府网站内容建设管理规范/企业网站优化关键词
  • 自媒体剪辑培训班/直通车关键词怎么优化
  • xp怎么建设网站/百度榜
  • 淘宝客网站返利程序/seo技术培训班
  • 网站做百度推广需要什么材料/如何进行seo
  • 福州专业网站建设/2345网址大全浏览器
  • 北京网站建设专家/汽车营销活动策划方案
  • 山东东营建设网官方网站/win优化大师有用吗
  • 网站报备流程/如何创建网站站点
  • 中跃建设集团有限公司网站/seosem是指什么意思
  • 做网站要钱嘛/seo诊断a5
  • 寿光网站制作/关键词百度指数查询
  • seo网站做推广公司/公司企业网站建设
  • 营销型网站设计服务商/百度店铺
  • 国外的技术社区/seo管理工具
  • 连江福州网站建设/网络培训班
  • 基于Python的图像文字识别系统
  • 详解低速容错CAN(附与高速CAN对比表)
  • 前端面试专栏-工程化:25.项目亮点与技术难点梳理
  • LeetCode--46.全排列
  • Halcon双相机单标定板标定实现拼图
  • 【BUG处理】构建APK时遇到错误:‘flutter‘ 命令未被识别。这通常表示您的系统中未安装Flutter SDK或环境变量配置不正确。