美文网首页
模拟 (mock) 对象

模拟 (mock) 对象

作者: 一颗老呀老松树 | 来源:发表于2019-05-08 14:57 被阅读0次

模拟 (mock) 对象:

double 可以理解为置换,它是所有模拟测试对象的统称,我们也可以称它为替身。一般来说,当你创建任意一种测试置换对象时,它将被用来替代某个指定类的对象。

stub 可以理解为测试桩,它能实现当特定的方法被调用时,返回一个指定的模拟值。如果你的测试用例需要一个伴生对象来提供一些数据,可以使用 stub 来取代数据源,在测试设置时可以指定返回每次一致的模拟数据。

spy 可以理解为侦查,它负责汇报情况,持续追踪什么方法被调用了,以及调用过程中传递了哪些参数。你能用它来实现测试断言,比如一个特定的方法是否被调用或者是否使用正确的参数调用。当你需要测试两个对象间的某些协议或者关系时会非常有用。

mock 与 spy 类似,但在使用上有些许不同。spy 追踪所有的方法调用,并在事后让你写断言,而 mock 通常需要你事先设定期望。你告诉它你期望发生什么,然后执行测试代码并验证最后的结果与事先定义的期望是否一致。

fake 是一个具备完整功能实现和行为的对象,行为上来说它和这个类型的真实对象上一样,但不同于它所模拟的类,它使测试变得更加容易。一个典型的例子是使用内存中的数据库来生成一个数据持久化对象,而不是去访问一个真正的生产环境的数据库。

实践中,这些术语常常用起来不同于它们的定义,甚至可以互换。稍后我们在这篇文章中会看到一些库,它们自认为自己是 "mock 对象框架",但是其实它们也提供 stub 的功能,而且验证行为的方式也类似于我描述的 "spy" 而不是 "mock"。所以不要太过于陷入这些词汇的细节;我下这些定义更多的是因为要在高层次上区分这些概念,并且它对考虑不同类型测试对象的行为会有帮助。

参考文章:

https://objccn.io/issue-15-5/

https://martinfowler.com/articles/mocksArentStubs.html

相关文章

  • 什么是 Mock 测试?

    什么是 Mock? 作为动词,Mock 是模拟、模仿的意思。 作为名词,Mock 是能够模仿真实对象行为的模拟对象...

  • Mock和Java单元测试中的Mock框架Mockito介绍(上

    什么是Mock? 在面向对象程序设计中,模拟对象(英语:mock object,也译作模仿对象)是以可控的方式模拟...

  • python mock server实现:flask

    一、什么是mock mock,即模拟。模拟一个对象,模拟接口返回。 二、什么场景要用mock 1、单元测试: 由于...

  • Mock测试

    初识mock 作为一个动词,mock是模拟、模仿的意思;作为一个名词,mock是能够模仿真实对象行为的模拟对象。 ...

  • openstack测试之mock学习

    mock 模块学习 mock是什么 mock英文意思是模拟,主要是功能是使用mock对象来指定python对象,以...

  • 软测扩充

    一、 mock 1. 什么是mock? ①测试桩:模拟被测对象的返回,用于测试②mock:通常指mock serv...

  • 模拟 (mock) 对象

    模拟 (mock) 对象: double可以理解为置换,它是所有模拟测试对象的统称,我们也可以称它为替身。一般来说...

  • python Mock的使用(1)

    什么是mock? mock在翻译过来有模拟的意思。这里要介绍的mock是辅助单元测试的一个模块。它允许您用模拟对象...

  • Python unittest.mock基本使用

    什么是mock? mock在翻译过来有模拟的意思。这里要介绍的mock是辅助单元测试的一个模块。它允许您用模拟对象...

  • 单元测试框架:Mockito

    什么是 Mock mock 的中文译为: 仿制的,模拟的,虚假的。对于测试框架来说,即构造出一个模拟/虚假的对象,...

网友评论

      本文标题:模拟 (mock) 对象

      本文链接:https://www.haomeiwen.com/subject/yzyziqtx.html