首页 > 解决方案 > 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 很陌生,显然我错过了一些东西。

标签: javaunit-testingmockito

解决方案


推荐阅读