spock中mock和stub的区别是什么
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关spock中mock和stub的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。使用stub测试桩如果我们需要测试
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
互联网高科技
互联网科技工作委员会主任
朗新科技与工业互联网
中国 科技 互联网
猪兼强互联网科技
上海挚品互联网科技
亿策互联网科技
互联网科技咨询
富国互联网科技创新基金
宁波青枫互联网科技有限公司
上海宁丞科技互联网
开一家科技互联网公司需要多少钱
互联网行业科技股
山东星卡互联网科技有限公司官网
广东工业互联网大赛深圳学泰科技
浙南科技城互联网大厦招聘
图游互联网科技
广州互联网高科技取餐柜
东风日产互联网科技公司叫什么
六子台科技互联网展会
湖北九亚互联网络科技有限公司
互联网前沿科技
互联网科技热点资讯
互联网科技的全部知识
半导体行业属于互联网高科技类吗
广西科技产业互联网是什么
福仕德教育科技互联网
山东蛋芒互联网科技有限公司
青岛互联网科技园
互联网科技创新方面的资料