Mockito Spy :需要但未调用,但它是

Mockito Spy : Wanted but not invoked, but it is

我有一个带有模拟存储库的服务的基本单元测试,如下所示:

@Test
    public void deleteEmployeeCallsRepositoryDeleteById() {
        Employee employee = new Employee();
        employee.setName("coolName");
        employee.setId(8978L);
        EmployeeRepository repoSpy = spy(employeeRepository);
        service.deleteEmployeeById(employee.getId());
        verify(repoSpy, atLeastOnce()).deleteById(employee.getId());
    }

当运行测试时,出现以下错误:

Wanted but not invoked:
employeeRepository.deleteById(8978L);
-> at unit.services.EmployeeServiceImplTests.deleteEmployeeCallsRepositoryDeleteById(EmployeeServiceImplTests.java:70)

However, there was exactly 1 interaction with this mock:
employeeRepository.deleteById(8978L);
-> at services.EmployeeServiceImpl.deleteEmployeeById(EmployeeServiceImpl.java:34)

第二句与第一句完全相反...

我尝试使用 verify(repoSpy, atLeastOnce()).deleteById(anyLong()); 以防万一,但出现相同的错误消息。

spy 不会就地改变参数,它会装饰它和 returns 间谍装饰器。您需要以普通方式将模拟或间谍传递给被测代码。