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 间谍装饰器。您需要以普通方式将模拟或间谍传递给被测代码。
我有一个带有模拟存储库的服务的基本单元测试,如下所示:
@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 间谍装饰器。您需要以普通方式将模拟或间谍传递给被测代码。