2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

极客时间 - 架构师一期 - 第六周作业

_

极客大学架构师训练营 第六周作业

架构师训练营第 2 期 第二周总结

月下独酌

第六周 技术选型 学习总结

应鹏

学习 极客大学架构师训练营

第二周

宇文青

【架构师训练营第 1 期 06 周】 学习总结

Bear

极客大学架构师训练营

第二周总结

孤星

第 2 周 - 命题作业

willson

架构师训练营 第二周作业

阿光

架构师训练营 第二周学习总结

阿光

第 6 周 作业

Pyr0man1ac

第二周作业总结

hunk

极客大学架构师训练营

【面经】面试官:如果让你设计一个高并发的消息中间件,你会怎么做?

冰河

面试 高并发 异步 限流 消息中间件

第2周作业

Steven

极客大学架构师训练营

【架构师训练营第 1 期 06 周】 作业

Bear

极客大学架构师训练营

架构师训练营 week2 课后练习

花果山

极客大学架构师训练营

第 5 周 作业

Pyr0man1ac

依赖倒置原则、接口隔离原则优化类的设计

极客大学架构师训练营

第二周作业

hunk

极客大学架构师训练营

架构师1期week05

FG佳

架构第六周作业

Geek_Gu

极客大学架构师训练营

架构师训练营 - 第六周 - 作业一

行者

week2学习总结

幸福小子

第六周作业 (作业二)

Geek_83908e

极客大学架构师训练营

第二周总结

willson

依赖倒置原则

落朽

架构师训练营week06

FG佳

架构师一期

Week2作业

幸福小子

架构师系列之3 接口分离原则

桃花原记

链表实现插入排序、机器学习Top 10 算法、图数据库实战Neptune、John 易筋 ARTS 打卡 Week 24

John(易筋)

学习 ARTS 打卡计划 链表实现插入排序 图数据库实战 Neptune

架构师训练营第六周总结

xs-geek

极客大学架构师训练营

架构师训练营第六周作业

CmHuang

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