java - mock-maker-inline 使其他模拟不起作用
问题描述
我尝试了mock-maker-inline
Mockito 的“孵化”功能,以便能够模拟最终课程(此处描述和讨论的问题)。从那时起,其他测试失败:
org.mockito.exceptions.misusing.NotAMockException:
Argument passed to when() is not a mock!
Example of correct stubbing:
doThrow(new RuntimeException()).when(mock).someMethod();
当我定义一个间谍抛出的异常时。其中一项测试的相关代码:
在@Configuration 类中:
@Bean
public MessagePersister messagePersister() {
return Mockito.spy(new MessagePersister(...));
}
注意:MessagePersister 由 CGLIB 代理。
在测试类中:
@Inject
private MessagePersister messagePersisterSpy;
@Test
public void exceptionInPersisterTest() {
doThrow(new SomeException("exceptionFromTest")).doCallRealMethod()
.when(messagePersisterSpy).persistMessages(any());
...
}
例外是可以理解的。的类messagePersisterSpy
是MessagePersister$$EnhancerBySpringCGLIB$$6c49f1e2
,但如果我删除该mock-maker-inline
功能,我的间谍是类MessagePersister$MockitoMock$515952708$$EnhancerBySpringCGLIB$$9523b504
的,测试是绿色的。
这种干扰来自哪里的任何想法,如果我能做些什么呢?
谢谢 !
解决方案
推荐阅读
- php - 如果用户名已注册,如何抛出错误消息
- node.js - 在树莓派 3 问题上安装 Node.js
- python - Django REST Framework:序列化器更新对象(如果存在)(通过唯一的一起)
- querydsl - JPAQuery 到 JPASubQuery,反之亦然
- android - Cordova 应用程序已停止 android 模拟器中的问题
- batch-file - 从批处理文件向 SQL 传递参数 - 出现垃圾值
- android - 比较方法违反了它的总合同!排序时
- node.js - 来自 Lambda 的 AWS 开发工具包调用需要超过 30 秒
- mysql - 如何编写 SQL 查询以查找超过百分比平均值?
- html - 将自定义箭头放在自定义下拉列表的顶部