Moq是利用诸如Linq表达式树和Lambda表达式等.NET 3.5的特性,为.NET设计和开发的Mocking库。它的目标是让Mocking以一种自然的方式与现有单元测试进行集成,使它更加简单、直观,以避免开发人员被迫重写测试或学习需要大量录制/播放的Mock框架。Moq的目标就是为了帮助那些编写测试代码,但却不使用Mocking框架的开发人员。Moq的设计原则就是以极低的门槛来获取良好的重构能力。

Moq提供了以下特性:

  • 强类型:不支持使用字符串来设置期望(expectations),也不支持Object类型的返回值和约束条件
  • 与VS的完美集成:所有的特性都全面支持VS智能感知,从设置期望,到指定引用方法的参数、返回值等全部支持。
  • 不再需要学习录制/播放,只需要构建你自己的Mock,设置好你的期望;调用它,然后有选择地验证它们即可。
  • 正如前三个特性所描述的,这让它的学习曲线极低,大多数情况下,你甚至无须阅读文档。
  • 细粒度的控制胜过使用一个简单的MockBehavior枚举器来实现对行为的Mock(再也不用去学习Mock、Stub、Fake和动态Mock等之间的理论差异了)
  • 可以对接口和类进行Mock
  • 重载期望:可以在全局设置时给Mock方法设置缺省的期望,在测试方法中可以根据需要对它进行重载。
  • 传入构造参数到被Mock类
  • 使用Mock拦截和引发事件

Moq是 开源的,而且期待更多人的贡献,它的源码、 二进制文件包以及一个 入门指南都托管在Google Code上。

Daniel Cazzulino是Moq的主要维护者,他已经发布了 一系列的文章来说明为什么创建Moq,并提供了几个很好的示例以展示如何有效地使用Moq

查看英文原文:Moq .NET Mocking Library

转载:Moq——.NET的Mocking库

Moq -.NET的Mocking库相关推荐

  1. Moq——.NET的Mocking库

    Moq是利用诸如Linq表达式树和Lambda表达式等.NET 3.5的特性,为.NET设计和开发的Mocking库.它的目标是让Mocking以一种自然的方式与现有单元测试进行集成,使它更加简单.直 ...

  2. DotNet 资源大全

    Awesome DotNet,这又是一个 Awesome XXX 系列的资源整理,由 quozd 发起和维护.内容包括:编译器.压缩.应用框架.应用模板.加密.数据库.反编译.IDE.日志.风格指南等 ...

  3. 【转】对ASP.NET程序员非常有用的85个工具

    介绍 这篇文章列出了针对 ASP.NET 开发人员的有用工具. 工具 1. Visual Studio Visual Studio Productivity Power tool:Visual Stu ...

  4. 转帖:DotNet 资源大全中文版

    (注:下面用 [$] 标注的表示收费工具,但部分收费工具针对开源软件的开发/部署/托管是免费的) API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框 ...

  5. .Net 开源项目资源大全

    Awesome DotNet,这又是一个 Awesome XXX 系列的资源整理,由 quozd 发起和维护.内容包括:编译器.压缩.应用框架.应用模板.加密.数据库.反编译.IDE.日志.风格指南等 ...

  6. .Net开源框架列表【转载】

    API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台.官网 ASP.NET WebAPI:快捷创建 HTTP 服务 ...

  7. .NET平台框架整理(1)

    API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台.官网 ASP.NET WebAPI:快捷创建 HTTP 服务 ...

  8. 3. 使用xUnit进行单元测试

    实现.NET Core时,xUnit可用于创建单元测试,.NET Core团队使用了该产品.xUnit是一个开源实现方案,创建NUnit 2.0的开发人员创建了它.现在,.NET Core命令行界面支 ...

  9. 代码的印象派:写点好代码吧

    最近有一位猎头顾问打电话询问是否有换工作的意向,对推荐的公司和职位的描述为:"我们这里有一家非常关注软件质量的公司,在寻找一位不仅能完成有挑战的软件开发任务,并且还对代码质量有非常高追求的软 ...

最新文章

  1. Flask 模型操作
  2. c# 使用TCP连接(server)
  3. springboot获取原生js请求_springboot跳转原生html
  4. 小程序 mathjs渲染公式_Mac 3D渲染和动画制作----KeyShot 9 Pro
  5. 【算法学习】最优二叉查找树(动态规划)
  6. 防淘宝关闭二维码案例
  7. Linux笔记6_vim编辑器常用命令总结
  8. jvm内存结构与java内存模型
  9. 一篇文章让你详细了解新手第一次如何使用物联网卡,满满的干货!
  10. HPE Microserver GEN10升级BIOS
  11. Bitmap、CBitmap、HBITMAP以及BITMAP的相互转换
  12. 机器学习笔记 - 优化简介
  13. 小哥Cadence Allegro 132讲字幕版PCB设计视频教程-cadence视频-allegro视频-PCB视频
  14. 磁盘空间不足怎么办?释放磁盘空间的4种方法
  15. 广东计算机非全日制 学校2020,2020年广东省非全日制研究生学校及专业有那些?...
  16. Schema是什么?
  17. Zoomla!逐浪CMS高端全栈训练营—开始报名啦
  18. ppt转换成pdf转换器下载
  19. iOS 9 App Search教程
  20. Carla设置同步模式

热门文章

  1. Amanda之安装、部署、测试以及优缺点
  2. (转)cd命令为何要实现成shell内建命令
  3. C/C++语言编程修养
  4. 《深度学习》 --李宏毅学习导图总结
  5. 插入排序(Insert Sort)
  6. 数据可视化大屏有哪些优势
  7. 大数据平台搭建包含哪些层级
  8. 大数据系统由哪些核心组件构成
  9. java两种绑定方式_java两种单例模式用法分析
  10. python从键盘输入一个数n、输出大于n且不能整除3_python基础练习题