【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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:357026
用户头像

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

关注

评论

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

Socket 通信原理

一个大红包

8月日更

重构你的css吧!(初看)

云小梦

CSS bem elementUI scss ITCSS

小说类公众号如何运营:先要满足特定读者人群

石头IT视角

Tron波场链智能合约系统开发案例|波场链源码搭建

Geek_23f0c3

TRONex波场智能合约 DAPP智能合约交易系统开发 波场DAPP

上游思维:凭一己之力能做些什么?

石云升

读书笔记 8月日更 上游思维

项目进度经常超时怎么办?项目经理如何有效管理项目进度?

优秀

项目管理工具

跨团队项目的集成测试实践分享

PingCode研发中心

软件测试 测试

做正确的事情,而不是把事情做正确

非著名程序员

个人成长 提升认知 认知提升 8月日更

最好用的 Angular 甘特图组件 ngx-gantt

PingCode研发中心

软件 工具 甘特图 ngx-gantt

英特尔CEO帕特·基辛格:面向未来的数字化需求,推进未来计算创新、探索与颠覆

科技新消息

Agora 教程丨一个典型案例,教你如何使用水晶球“数据洞察”

声网

Agora 教程 水晶球

半监督学习概述(二)

数据与智能

学习 深度半监督

干货!DataPipeline2021数据管理与创新大会全篇划重点

DataPipeline数见科技

大数据 数据融合 数据管理

Go- 函数返回值

HelloBug

函数 返回值 Go 语言

再也不怕 JavaScript 报错了,怎么看怎么处理都在这

前端依依

学习 技术 大前端 js

适女化科技(一):伪需求,真消费

脑极体

程序员作图工具和技巧,你 get 了么?

程序员鱼皮

Java 大前端 后端 架构设计 代码

【漏洞分析】远程命令执行漏洞总结

网络安全学海

网络安全 信息安全 网络 渗透测试 安全漏洞

InnoDB 表空间

leonsh

MySQL innodb 表空间

Python代码阅读(第16篇):列表求差集

Felix

Python 编程 Code Programing 阅读代码

火爆 GitHub!这个图像分割神器开源了

百度开发者中心

人工智能 开源 最佳实践 图像

Go- switch-case结构

HelloBug

Go 语言 switch case

亚信数据库AIDB通过统信UOS认证,国产自主可控项目新选择

亚信AntDB数据库

国产化 国产数据库 亚信数据库AIDB

Vue进阶(五十九):ES数组操作:splice() 实现数组删除、替换、增加指定元素

No Silver Bullet

Vue 8月日更 splice

☕【Java技术指南】「编译器专题」重塑认识Java编译器的执行过程(常量优化机制)!

洛神灬殇

Java 编译器 技术栈 8月日更

Go- goto和label

HelloBug

Go 语言 goto label

阿里巴巴最新产物!Spring+SpringBoot+SpringCloud Alibaba全系列高阶笔记

Java spring 程序员 架构 后端

Go- for循环

HelloBug

for Go 语言

Go- break和continue

HelloBug

Go 语言 break continue

docker概念很乱?俺来替你理一下!

Java Docker 架构 后端

云与AI真的能互相成就?还是最好各自独立行走?

脑极体

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