Я пытаюсь написать несколько тестов JUnit.В моем тестовом классе мне нужно шпионить за сервисом, имеющим транзакционные методы в реализации.Когда я пытаюсь шпионить за этой службой, я получаю эту ошибку:
Mockito cannot mock/spy because :
- final class
Если я удаляю @Transactional
из методов, шпион работает правильно.Я понимаю, что это проблема из-за службы прокси.Как я могу решить эту вещь?
Мой тестовый класс:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {CreateIfcClusterTaskTest.Config.class})
@DirtiesContext(classMode =
DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class CreateIfcClusterTaskTest {
static class Config extends SpringTestConfiguration {
@Bean
@Primary
public VirtualControllerService
virtualControllerService(VirtualControllerService
virtualControllerService) {
return Mockito.spy(virtualControllerService);
}
}
}
Мой сервис - VirtualControllerService
:
public interface VirtualControllerService {
JsonHost createVifcHostForWebApi(VirtualController virtualController);
void stopDocker(DockerClient docker, String joinerIpAddress) throws
DockerException, InterruptedException;
}
Мой сервисный импл - VirtualControllerServiceImpl
:
@Service
public class VirtualControllerServiceImpl implements
VirtualControllerService {
@Override
@Transactional
public JsonHost createVifcHostForWebApi(VirtualController
virtualController) {
JsonHost jsonHost = new JsonHost();
jsonHost.setIP(virtualController.getIpAddress());
jsonHost.setUser(environment.getProperty("VIFC_WEBAPI_USER"));
jsonHost.setPassword(environment.getProperty("VIFC_WEBAPI_PASSWORD"));
return jsonHost;
}
}