`

stub 与 mock 的区别

阅读更多

有些东西就是这样,有些东西你心理面很明白,可是当你要给别人讲的时候却发现有一点点困难。

 

关于Stub & Mock的确别,我的理解是:

 

1.先说不同点:

 

   Stub方法里面需要实现逻辑,因为对Stub的调用者需要依赖,stub模块或函数的返回值,正因为此,搭建stub跟mock比起来,是比较耗费精力的。也正因为此,stub一般用于粗粒度测试。

 

   而mock的关键则是他要足够啥,只要能够让他的依赖者与之进行足够的交互既可以,正因为他傻,所以他的编写相对较容易,也正因为他傻,创建mock的工作可以由Easymock,mockmaker来自动完成,也正因为此,他可以用作细粒度的测试。

 

2.再说相同或想联系的地方。

 

   都能够对系统进行隔离,

 

   测试的很多时候我们会把一个mock退化成一个简单的stub,大多数的mock生成工具也都支持这一点。从这一点我们也可以看出,虽然作为很不同的两个概念,但他们之间也不是永远有着严格的界限。

 

其他的呢?关于设计与使用上的更多考量呢? 呵呵 这里推荐Martin Fowler 的一篇文章,文章很好,是naias宝宝 发给我的,感谢naias宝宝。:)

 

Mocks Aren't Stubs

Mocks Aren't Stubs(一个翻译的版本)

分享到:
评论
1 楼 mlzboy 2008-08-18  
刚看到martin flower的e文头痛,于是google了一下就到你这了

相关推荐

    单元测试之Stub和Mock

    为了解决这个问题,我们需要用到Stub和Mock来模拟这些外部依赖的对象,从而控制它们Analyze类会检查filename的长度,如果小于8,我们就会使用一个实现IWebService的类来记录错误.我们需要给Analyze方法写单元测试。...

    mocha, mocha 是用于 ruby的mock和stub库.zip

    mocha, mocha 是用于 ruby的mock和stub库 mocha 描述用于模拟和stub的ruby 库。完整的。简单的和可以读的语法,完全&部分模拟。内置支持MiniTest和 Test::Unit 。由许多其他测试框架支持。安装 gem使用以下

    Stub:灵活的Stub包装器,用于PHPUnit的Mock Builder

    可以使用Codeception\Stub静态调用来构造Codeception\Stub : <?php // create a stub with find method replaced $ userRepository = Stub :: make ( UserRepository ::class, [ 'find' => new User ]); $ ...

    Jeek - stub and mock generator for .NET-开源

    Jeek是.NET的一个具体的类/存根/模拟代码生成器,用于单元测试。

    webmock, 在 ruby 中,对HTTP请求的stub和设置期望的库.zip

    webmock, 在 ruby 中,对HTTP请求的stub和设置期望的库 WebMock 在 ruby 中对HTTP请求进行存储和设置期望的库。特性在低HTTP客户机库级别的Stubbing请求( 在更改HTTP库时不需要更改测试)设置和验证HTTP请求的期望...

    moco-all-0.81

    2013/08 get moco all info. Like stub, Mock

    redismock:Go在Go的单元测试中模拟Redis

    与使用真实或伪造的Redis(在下文中有更多介绍)不同, redismock提供了正常且美观的redismock ,以提高控制行为的灵活性。 一个示例可能是测试Redis花费很长时间来响应命令或返回预期错误的情况。 NewMock() ...

    HttpMock:一个用于在测试和响应中即时创建Http服务器的库

    HttpMock HttpMock使您可以在测试过程中模拟应用程序所依赖的HTTP服务的行为。 这对于集成和验收测试特别有用。 HttpMock在运行时返回罐装响应。用法。 首先,在要测试的应用程序中,使用HttpMock的URL更改要模拟的...

    jest-spy-mock-stub-reference:开玩笑.fn()和.spyOn()spystubmock断言参考

    开玩笑.fn()和spyOn()spy / stub / mock断言参考要求节点10 纱线1.x或npm设置克隆存储库运行yarn或npm install将安装所有必需的依赖项。npm脚本等效的npm run [removed]也应该起作用yarn test测试使用Jest运行...

    The Art of Unit Testing with Examples in .NET

    英文文字版,以C#语言为例,使用NUnit、RhinoMocks,讲解如何在.NET平台下进行单元测试,深入讲解Stub和Mock。

    置换测试:Mock,Stub和其他

    在理想情况下,你所做的所有测试都是能应对你实际代码的高级测试。例如,UI测试将模拟实际的用户输入(Klaas 在他的文章中有讨论)等等。实但际上,这并非永远都是个好主意。为每个测试用例都访问一次数据库或者旋转...

    有效使用Mock编写java单元测试

    Java单元测试对于开发人员质量保证至关重要,尤其当...Mock说白了就是打桩(Stub)或则模拟,当你调用一个不好在测试中创建的对象时,Mock框架为你模拟一个和真实对象类似的替身来完成相应的行为。使用如下方式在Mav

    模拟:Mocka-LUA和Nginx的完整测试框架

    一个模拟类的lua测试框架与项目中的真实类一起运行,具有用于openresty单个测试的nginx嵌入式方法。 预先安装了一套库,您可以指定要安装的库。 Mocka在docker中比在独立环境中运行得更好-您需要做的就是拉取映像...

    Mockito Essentials(PACKT,2014)

    Explore test doubles and work with dummy, spy, fake, stub, and mock objects Uncover the Mockito architecture and build a custom mocking framework Mock, stub, and spy external code dependencies using ...

    JMockit教程.pdf

    开源社区有许多优秀的Java单元测试框架,JMockit是其中之一。...mock-up API用来进行stub测试。接下来分别进行介绍。这篇文章内容部分来源于JMockit Tutorial英文版的翻译,部分来源于我的一些实践与理解。

    rspec-activemodel-mocks:将stub_model和嘲笑模型添加到rspec-mocks

    model(Person, name: "Fred")安装将此行添加到您的应用程序的gemfile中: gem 'rspec-activemodel-mocks'然后执行: $ bundle如果您使用的是并且已按照那里的安装说明进行操作,那么您都可以设置为stub_model和mock_...

    sinon-jest-cheatsheet:关于两个库如何实现相同目标的一些示例

    Sinon#Jest(速查表)。 关于如何使用两个库中的任何一个...虽然sinon的侦听功能使用了三种不同的术语: spy , stub和mock ,但jest大多将术语“ mock function用于间谍/存根和manual mock或mock ...嗯,对于嘲笑。

    stub-proxy:猴子的 HTTP 代理前端

    存根代理猴子的 HTTP 代理前端用法独立 npm install -g stub-proxystub-proxy [-p ] [-a ] <mock>去做为数据导出添加set和get入口点

Global site tag (gtag.js) - Google Analytics