首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Scala项目的Mockito参数匹配器InvalidUseOfMatchersException

Scala项目的Mockito参数匹配器InvalidUseOfMatchersException
EN

Stack Overflow用户
提问于 2019-11-14 00:10:06
回答 2查看 156关注 0票数 1

我有一个Scala项目,我正在使用mockito (mockito-core 3.0)进行测试。

下面是我试图模拟的函数的函数签名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def hset[V: ByteStringSerializer](key: String, field: String, value: V): Future[Boolean] = ...

这不管用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
verify(mockObj, never()).hset(anyString(), anyString(), anyLong())

错误退出与此

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Invalid use of argument matchers!
4 matchers expected, 3 recorded:

不知道当函数有3个带有泛型类型的参数时,它为什么需要4个匹配器?

这行得通

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
verify(mockObj, never()).hset("a", "b", 3.0)

这是因为我使用的scala代码不能正确地使用mockito内核?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-14 00:27:52

造成这个问题的原因是上下文约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def hset[V: ByteStringSerializer](key: String, field: String, value: V): Future[Boolean]

实际上是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def hset[V](key: String, field: String, value: V)(implicit ev: ByteStringSerializer[V]): Future[Boolean]

现在,您可以看到为什么有4个参数,请尝试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
verify(mockObj, never()).hset(anyString(), anyString(), anyLong())(any(classOf[ByteStringSerializer[Long]]))
票数 1
EN

Stack Overflow用户

发布于 2019-11-14 00:42:01

正如Ivan指出的,你错过了隐含的匹配器。我建议您迁移到mockito-scala,因为当隐式在作用域时,这类场景就会开箱即用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58852068

复制
相关文章
Mockito 2 参数匹配器
Mockito 通过使用 equals() 这种自然的 Java 样式来校验参数值。有时候,当需要有其他一些灵活性的时候,你可能会要求使用参数匹配(argument matchers)。
HoneyMoose
2019/09/23
1.2K0
Mockito 2 参数匹配器
Mockito 通过使用 equals() 这种自然的 Java 样式来校验参数值。有时候,当需要有其他一些灵活性的时候,你可能会要求使用参数匹配(argument matchers)。
HoneyMoose
2019/09/21
8190
Scala教程之:scala的参数
在Scala中,可以给参数提供默认值,这样在调用的时候可以忽略这些具有默认值的参数。
程序那些事
2020/07/07
6170
Scala 【 13 类型参数 】
​ Scala 的类型参数其实意思与 Java 的泛型是一样的,也是定义一种类型参数,比如在集合,在类,在函数中,定义类型参数,然后就可以保证使用到该类型参数的地方,就肯定,也只能是这种类型。从而实现程序更好的健壮性。
Lokinli
2023/03/09
5200
mockito入门
最近在项目中跑单元测试发现直接使用springboot自带的测试,一整套跑起来花费数十分钟,这是无法忍受的,考虑到功能的特殊性,想到了Spring测试包自带的mockito单元测试,所以进行初次尝试使用。
查拉图斯特拉说
2023/10/25
3970
mockito入门
Scala 【 3 循环、函数和参数 】
块表达式,指的是 {} 中的值,其中可以包含多条语句, 最后一个语句的值就是快表达式的值。
Lokinli
2023/03/09
5830
测试mockito
@RunWith(MockitoJUnitRunner.class) public class BaseMock {
XING辋
2019/03/26
7770
Vue3项目的创建和托管
前面我们在学习Vue的时候都是将Vue的代码直接写在html文件的script中,但实际工作中,我们会使用工具(比如vue-cli)创建完整的项目结构,同时将vue项目托管于nodeJS等JS运行时,实现前端服务的生产化部署。
Python研究所
2022/06/17
7490
Vue3项目的创建和托管
Spark基础-scala学习(七、类型参数)
类型参数是什么 类似于java泛型,泛型类 泛型函数 上边界Bounds 下边界 View Bounds Context Bounds Manifest Context Bounds 协变和逆变 Existential Type 泛型类 scala> :paste // Entering paste mode (ctrl-D to finish) class Student[T](val localId:T){ def getSchoolId(hukouId:T) = "S-"+hukouId+"-"+
老梁
2019/09/10
6870
[Java]单元测试组件Mockito
Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。什么是不容易构造的对象呢?例如HttpServletRequest,需要在有servlet容器环境中创建获取。那不容易获取的对象呢?如一个JedisCluster,需要准备redis相关环境,然后设置进去等等。
宇宙无敌暴龙战士之心悦大王
2023/04/03
4.1K1
Mockito系列-开篇
开启Mockito单元测试系列,这是第一篇。本文将介绍如何用Mockito来mock一个股票服务接口,在服务尚未实现的情况下,验证一个客户股票投资组合的计算逻辑。 谨以此文纪念2020年春美股的一周两次熔断
Antony
2020/12/01
1.1K0
Mockito系列-开篇
博文精选|Mockito使用指南
https://blog.csdn.net/shensky711/article/details/52771493(点击阅读原文前往)
java达人
2018/12/24
4.3K0
Scala基础 - 传名参数和传值参数(by-name/by-value parameter)
1. 介绍 传值参数在函数调用之前表达式会被求值,例如Int,Long等数值参数类型;传名参数在函数调用前表达式不会被求值,而是会被包裹成一个匿名函数作为函数参数传递下去,例如参数类型为无参函数的参数就是传名参数。下文将举例说明这两者的区别。 2. 简单类型的传递示例 2.1 传值参数(by-value parameter)示例 在下面的示例中,编译器检测到strToInt接受一个传值参数,所以先对传入的参数表达式{println("eval parameter expression"); "123"},然
joymufeng
2018/05/17
2K0
利用Mockito模拟DB
前两篇文章的主要内容是:为了给执行测试,如何建立数据库表和导入初始数据。这里我们将学习如何利用Mockito框架和一些注解模拟(mock)Repository实例,从而使得测试用例不依赖外部的数据库服务。
阿杜
2018/08/06
2.1K0
利用Mockito模拟DB
react-admin+material ui5.0项目的总结
为了更好的进行前后端的设计开发 后端目前用postgrest设计数据库 前端直接使用react-admin和material ui 5.0进行开发 大大增加开发效率
爱学习的前端歌谣
2023/10/18
3600
react-admin+material ui5.0项目的总结
一起学Mockito(一)
项目太大,工程太多。不知道何时起,我们就没了开发环境。代码都是在预发环境上验证没问题之后发到正式环境。总之一句话,本地代码是跑不起来的,想要徒手抓bug,你就要拥有一定水平。假设跟作者一般菜,那就只能无限打印log日志了,主要是打了日志可别忘了删。否则bug没抓到,还被别人看到那乱七八糟的代码怕是又要应届生同学一顿diss了。其实搭建一套开发环境理论是可行的,但是谁也撬不动好几个部门,即便撬动了,弄出来怕是得个一两年,所以就只能用单测自我安慰了。
写一点笔记
2022/08/11
5220
整合到 Mockito 2
为了能够持续改进 Mockito 和在未来提升测试体验,我们希望你能够升级到 Mockito 2.10!Mockito 按照语义化版本(semantic versioning)的方式对版本进行编排,并且只在主版本升级的时候包含有重大的修改。
HoneyMoose
2019/09/17
1.2K0
Mockito.when().thenReturn
在之前的案例中,通过Mockito.when().thenReturn的方式构造了测试桩,来控制StockService.getPrice()这个方法的返回值。
Antony
2020/12/01
3.9K0
Scala 【 4 参数、过程以及数组 Array 和 ArrayBuffer 】
比如上面的传递 val s = sum(1 to 10) 这样子是不对的,此时需要使用 scala 特殊的语法将参数定义为序列,让 scala 解释器能够识别。
Lokinli
2023/03/09
3930
点击加载更多

相似问题

Mockito org.mockito.exceptions.misusing.InvalidUseOfMatchersException:无效使用参数匹配器!0匹配预期,1记录:

12

java mockito匹配器InvalidUseOfMatchersException

126

Mockito InvalidUseOfMatchersException当我发送匹配器作为参数时

13

Mockito错误:.InvalidUseOfMatchersException:参数匹配器的无效使用

12

Mockito -0匹配预期,1记录(InvalidUseOfMatchersException)

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文