.net最受欢迎,最友好的嘲笑图书馆
var mock = new Mock <IloveThislibrary>(); // 哇!没有记录/重播怪异吗? :) mock.setup(library => library.downloadexists(“ 2.0.0.0”))。返回(true); //使用模拟上的对象属性获取对对象的引用 //实施ilovethislibrary,然后通过致电来锻炼它 //上面的方法 ilovethislibrary lodable = mock.Object; bool download = lovable.downloadexists(“ 2.0.0.0”); //验证给定方法的确最多一次以期望值为单位 mock.verify(library => library.downloadexists(“ 2.0.0.0”),times.times.tomposonce());
MOQ也是到目前为止的第一个也是唯一的图书馆,可以为模拟提供Linq,因此上述相同的行为可以更简洁地实现:
ilovethislibrary lodable = mock。 //练习通过在其上调用方法返回的实例... bool download = lovable.downloadexists(“ 2.0.0.0”); //只需主张返回的状态: assert.true(下载); //如果您想超越国家测试并想 //改为验证模拟互动... mock.get(lodable).verify(库=> library.downloadexists(“ 2.0.0.0”));
您可以将Linq视为“从模拟宇宙中,给我一个与此表达相匹配的行为”。
查看QuickStart以获取更多示例!
MOQ(发音为“模拟您”或仅“模拟”)是从头开始开发的.net唯一模拟库,可以充分利用.NET LINQ Expression Trees和Lambda表达式,这使其成为最有生产力,类型的安全性和可用重构友好的模拟库。它支持模拟接口和类。它的API非常简单明了,不需要任何嘲笑概念的先验知识或经验。
该库主要是为当前不使用任何模拟库(或对某些其他实现的复杂性不满意的开发人员而创建的),他们通常手动编写自己的模拟(或多或少具有“幻想”)。在这种情况下,大多数开发人员也恰好是务实的,并且遵守状态(或经典)TDD。这是因为感觉到来自其他模拟图书馆的进入障碍有点高,并且可以一种更简单,更轻巧和优雅的方法。通过充分利用优雅而紧凑的C#和VB语言功能,欧克人实现了所有这些功能(它们不仅是用于查询,就像首字母缩写所暗示的那样)。
MOQ的设计是一种非常实用,不引人注目且直截了当的方式,可以快速为您的测试设置依赖项。它的API设计有助于新手用户陷入“成功坑中”,并避免嘲笑的最常见的滥用/滥用。
当它被构思时,它是唯一与所有其他图书馆的录音/重播方法相抵触的唯一嘲笑图书馆(尤其是对于新手)的记录/重播方法(这可能是一件好事;)。
不使用记录/重播也意味着将共同期望移至固定设置方法,甚至在特定单位测试中需要时覆盖这些期望是很简单的。
您可以在Kzu的博客上阅读有关“为什么”的更多信息,并在Kzu的博客上查看一些不错的屏幕截图。
请参阅我们的Quick Start示例,以感受到非常简单的API并从Nuget安装。
在Kzu的博客上阅读有关公告的信息。从斯科特·汉塞尔曼(Scott Hanselman)获得模拟图书馆状态的一些背景。
欧克最初是由克拉里乌斯(Clarius),马纳斯(Manas)和Instedd开发的。
欧克人在内部使用Castle Dynamproxy作为拦截机制来嘲笑。
欧洲签提供以下功能:
强大的:没有期望的字符串,没有对象类型的返回值或约束
无与伦比的vs Intellisense集成:从设置期望,到指定方法呼叫参数,返回值等,一切都支持完整的Intellisense。
没有记录/重播成语要学习。只需构建模拟,将其设置,使用它并可选地验证调用呼叫(您只能在模拟中充当存根,或者通过从测试中的对象检查返回的值来进行更经典的基于状态的测试时,您不得验证它们的呼叫)
由于前三点的结果,学习曲线非常低。在大多数情况下,您甚至不需要阅读文档。
用简单的模拟行为枚举对模拟行为的颗粒状控制(无需了解模拟,存根,假,动态模拟等之间的理论差异。)
模拟界面和类
覆盖期望:可以在固定设置中设置默认期望,并根据需要在测试中覆盖
通过模拟课程的构造论参数
拦截并提高模拟事件
对out/ref
参数的直观支持
我们深切感谢您可能获得的任何反馈!请随时参加聊天,或在问题跟踪器中报告问题。
了解有关GitHub赞助商的更多信息