写点什么

Moq——.NET 的 Mocking 库

  • 2008-08-18
  • 本文字数:665 字

    阅读完需:约 2 分钟

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

2008-08-18 20:357464
用户头像

发布了 90 篇内容, 共 16.3 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

Spring Security

Zhang

Java spring security

萌新看过来,你还学不懂VScode插件吗?

葡萄城技术团队

报表

无形资产管理系统解决方案

低代码小观

资产管理 CRM 财务审核系统 CRM系统 企业管理软件

AIRIOT物联网低代码平台如何配置MQTT驱动?

AIRIOT

物联网 低代码平台 驱动配置

netty系列之:我有一个可扩展的Enum你要不要看一下?

程序那些事

Java Netty 程序那些事 5月月更

Spring Authorization Server 实现授权中心

Zhang

Java OAuth 2.1 Spring Security OAuth

硬件为矛 软件为盾 英特尔分享数据中心GPU的攻守之道

科技新消息

ansible 模块:set_fact

ghostwritten

ansible

有趣、实用、全面,是程序员心中理想人工智能教材的样子了

图灵教育

深度学习 PyTorch

无聊科技正经事周刊(第6期):纯粹的程序员与必然的中年危机

潘大壮

程序员 周刊 行业趋势 科技周刊

数据标准在网易的实践

网易数帆

大数据 数据仓库 数据治理 元数据 数据标准

基于 FFI 的 PyFlink 下一代 Python 运行时介绍

Apache Flink

大数据 flink 编程 流计算 实时计算

ansible template jinja2 渲染

ghostwritten

ansible

拿起手中的键盘做公益侠客,让你的第一个低代码应用为公益发光发热!

InfoQ写作社区官方

低代码 公益 大学生 热门活动 码上公益

等保三级全称是什么?是什么意思?

行云管家

网络安全 等级保护 等保三级 等保2.0

当.Net撞上BI可视化,这3种“套路”你必须知道

葡萄城技术团队

看板 数据大屏 BI数据分析

「码」力集结!他们用作品为FinClip黑客松打造出一道靓丽的风景线

Speedoooo

小程序 hackathon 黑客马拉松 黑客松 小程序容器

墨天轮访谈 | OceanBase 白超:海量数据管理,为什么选择OceanBase?

墨天轮

数据库 oceanbase 国产数据库

FinClip+微幕小程序,助力企业全端公私域流量互通

Speedoooo

小程序 WordPress 移动开发 小程序容器

英特尔以四大超级技术力量,助力数字未来,发布多项进展

科技新消息

企业文档爆炸,如何管?

小炮

企业文档管理工具

Apache DolphinScheduler 2.X保姆级源码解析,中国移动工程师揭秘服务调度启动全流程

白鲸开源

Apache 大数据 开源 DolphinScheduler workflow

如何开发 LAXCUS 分布式应用软件(三):编写终端软件

LAXCUS分布式操作系统

集群架构 并行计算 端边云 分布式操作系统 分布式应用软件

揭秘英特尔未来IPU路线图,开启数据中心“进化之旅”

科技新消息

Hugging Face创始人亲述:一个GitHub史上增长最快的AI项目

OneFlow

人工智能 深度学习 nlp 开源社区

Go1.18泛型浅谈

CodeWithBuff

golang 泛型 新特性 Go 语言

windows服务器是什么?运维管理用什么工具好?

行云管家

windows 服务器 自动化运维 服务器运维

ansible 模块:script

ghostwritten

ansible

还在写SQL做SAP二开?通过RFC调用NetWeaver,让HANA数据库操作更可靠

葡萄城技术团队

ERP 全套信息化系统 二开

容器化 | 构建 RadonDB MySQL 集群监控平台

RadonDB

MySQL 数据库 容器化 RadonDB KubeSphere

美哭了,一款开发者必备的接口管理工具!

Liam

Postman 开发工具 API API接口管理 接口管理工具

Moq——.NET的Mocking库_.NET_Al Tenhundfeld_InfoQ精选文章