java - Mockito 验证不适用于间谍对象
问题描述
我正在尝试在单元测试中使用验证来验证在被监视的对象上调用了一个方法。我可以验证该方法实际上是通过日志语句调用的,并使用调试器单步执行代码。然而,verify(Object,1).method() 调用报告“需要但未调用:”此外,未注释的断言 mockTransferService.getCurrentTask() 返回 null 而我可以再次使用调试器验证它是否已设置。测试代码如下图
@Test
public void testInitialPermitGranted() throws Exception {
Config mockConfig = mock(Config.class);
doReturn(path).when(mockConfig).getRequiredStringProperty(Config.WORK_DIR);
mockTransferService = spy(new TransferServiceImpl(mockServiceConnection, mockConfig,
Executors.newSingleThreadScheduledExecutor()));
doReturn(true).when(mockTransferService).doStartTransfer(any());
mockTransferService.enqueueTransfer(mockTransferTask);
Thread.sleep(1000);
//Assert.assertEquals(mockTransferTask, mockTransferService.getCurrentTask());
verify(mockTransferService,times(1)).startTransfer(any());
}
}
正在测试的方法如下所示
@Override
public boolean startTransfer(TransferTask transferTask) {
LOG.debug("StartTransferCalled");
setCurrentTask(transferTask);
return doStartTransfer(transferTask);
}
我对 mockito 很陌生,显然我错过了一些东西。
解决方案
推荐阅读
- android - 电话 API 什么都不做
- javascript - 如何使用 Jest 测试标头 axios.defaults.headers?
- r - R Shiny:如何从数据表中的自定义按钮调用 JavaScript 函数
- ios - 使用 Podfile 安装 react native 包
- docker - Docker 守护进程中的故障
- css - 在 Wordpress 中更改网站标题格式(Astra 主题)
- python - Python:从数据框的列中删除所有数据,除了我们存储在第一行中的最后一个值
- javascript - Photoshop 脚本 - 用户定义的圆的原点(坐标)
- rust - `impl 和有什么区别
T 的特征,其中 T:Trait2` 和 `impl Trait for dyn Trait2`? - python - 如何使用 Beautiful soup 从 html 页面获取链接 url