`

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了一下就到你这了

相关推荐

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

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

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

    Jeek是一个针对.NET平台的专业工具,它专注于生成类、存根(stub)和模拟(mock)代码,极大地简化了单元测试的过程。在软件开发中,尤其是采用敏捷开发方法时,单元测试是确保代码质量、可维护性和可靠性的重要环节...

    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 ]); $ ...

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

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

    easymock详解教程

    mock和stub在测试领域中都是为了实现对测试对象(通常是待测代码)与其他系统组件之间交互的模拟,从而确保测试环境的纯净性。它们的主要作用在于: - **隔离测试对象**:通过替换实际的对象,避免了对外部系统的...

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

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

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

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

    cpp-stub函数打桩相关文件

    - **隔离测试**:打桩可以隔离被测试代码与其他系统的交互,确保测试结果仅受控于测试代码。 - **模拟行为**:当被测试函数依赖于不可预测或难以模拟的服务时,如网络通信或数据库访问,打桩可以提供可预测的响应。 ...

    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运行...

    如何使Singletons的行为可以被Mock对象覆盖

    然而,Singletons在单元测试中往往成为挑战,因为它们的静态实例化和不可变性使得它们难以被Mock或Stub。当我们需要测试与Singleton交互的代码时,无法替换Singleton的行为,这限制了测试的灵活性。本篇文章将探讨...

    置换测试:Mock,Stub和其他

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

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

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

    test_stub

    2. **接口匹配**:测试桩的接口应与被替换的实际组件保持一致,以便无缝地插入到系统中。 3. **预设行为**:根据测试需求,预设测试桩的返回值或行为。例如,如果测试需要某个函数返回特定值,那么就设置test_stub...

    模拟: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 ...

Global site tag (gtag.js) - Google Analytics