spock中mock和stub的区别是什么
发表于:2024-10-16 作者:千家信息网编辑
千家信息网最后更新 2024年10月16日,这篇文章将为大家详细讲解有关spock中mock和stub的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。使用stub测试桩如果我们需要测试
千家信息网最后更新 2024年10月16日spock中mock和stub的区别是什么
这篇文章将为大家详细讲解有关spock中mock和stub的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
使用stub测试桩
如果我们需要测试A方法,但是E方法目前还没办法调用,或者还没开发完成。这种场景下,就可以使用stub测试桩。stub测试桩可以给E方法模拟一个或多个假的返回值,我们测试时只需要调用stub对象的E方法即可,调用后的返回值是我们在生成stub对象时指定的。如下:
def "Stub 测试桩"() { given: "构造测试桩" CalculateInterface calculateService = Stub(CalculateInterface) calculateService.plusPlus(_) >> 1 when: int x = calculateService.plusPlus(12) int y = calculateService.plusPlus(3) then: x == 1 y == 1 }
上面代码中,calculateService.plusPlus(_) >> 1
给一个并未实现的plusPlus()方法指定了返回值为1,测试代码就可以直接调用这个方法了。
其中这个语句的常用格式有:
subscriber.receive(_) >> "ok"| | | || | | 生成返回值| | 参数| 方法对象
生成返回值:
// 不同参数生成不同的返回值subscriber.receive("message1") >> "ok"subscriber.receive("message2") >> "fail">
通过计算生成返回值
这种方式,生成返回值的格式时一个闭包
// 1.使用方法参数计算subscriber.receive(_) >> { args -> args[0].size() > 3 ? "ok" : "fail" }// 2. 使用其他参数subscriber.receive(_) >> { String message -> message.size() > 3 ? "ok" : "fail" }
如果想调用方法抛出异常
subscriber.receive(_) >> { throw new InternalError("ouch") }
链式生成返回值
subscriber.receive(_) >>> ["ok", "fail", "ok"] >> { throw new InternalError() } >> "ok"
上面代码中,方法被调用的前三次分别返回 "ok", "fail", "ok",第四次会抛出异常,第五次及以后调用,会返回"ok"。
以上是spock中stub测试桩的使用场景,总结为一句就是: stub测试桩给被调用者( 方法/模块)制造假的返回值,以便不影响调用者的测试。
使用mock测试桩
mock测试桩就是模拟一个测试的结果。如下图,A类调用类B和C类的某个方法:
如果要测试A的方法,但是我们没办法调用B来检测结果,就可以使用mock测试桩,生成一个B的mock对象。检验结果时,可以使用B的mock对象替代B。这个结果一般是B和C方法的调用或者状态的改变。
def subscriber = Mock(Subscriber) // 1. 创建一个mock对象 def "should send messages subscriber"() { when: publisher.send("hello") // 2. publisher 发送一个"hello" then: 1 * subscriber.receive("hello") // 3. subscriber 接收到一个"hello" 1 * subscriber.messageCount == 1 }
关于spock中mock和stub的区别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
测试
方法
生成
对象
参数
结果
代码
不同
内容
办法
场景
就是
文章
更多
格式
用者
知识
篇文章
不错
使用方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
集团网络技术有限公司
联机侠服务器咋做rpg装备
联想服务器配置管理ip地址
任天行网络安全管理终端
数据库投影条件
雷神之锤冠军有哪些服务器
网络安全工作是做啥的
中国网络安全技术与国外对比
java数据库教程第九讲
汉中网络技术参考价格
oracle 指定数据库
FBI服务器被攻击h
数据库期末题目
域名绑定好服务器之后呢
网络安全我国实行什么制度
我的世界文博的服务器
工信部网络安全重点
从数据库中获得最新的表
毕恩网络技术服务部
Wgbs数据库
数据库访问组件mdac版本降级
win10服务器安装不了软件
数据库运维评审
兰大研究生网络安全专题
易经是数据库
计算机与网络安全类专业
小学四年级手机网络安全
合肥和信网络技术有限公司
网站编辑和软件开发哪个好
ionic如何访问数据库