Для моего приложения Spring-Boot я предоставляю RestTemplate через файл @Configuration, чтобы я мог добавить разумные значения по умолчанию (например, тайм-ауты). Для моих интеграционных тестов я хотел бы высмеять RestTemplate, поскольку я не хочу подключаться к внешним сервисам — я знаю, каких ответов ожидать. Я попробовал предоставить другую реализацию в пакете интеграционного теста в надежде, что последняя переопределит реальную реализацию, но при проверке логов все наоборот: реальная реализация переопределяет тестовую.
Как я могу убедиться, что используется именно тот файл из TestConfig?
Это мой файл конфигурации :
@Configuration
public class RestTemplateProvider {
private static final int DEFAULT_SERVICE_TIMEOUT = 5_000;
@Bean
public RestTemplate restTemplate(){
return new RestTemplate(buildClientConfigurationFactory());
}
private ClientHttpRequestFactory buildClientConfigurationFactory() {
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setReadTimeout(DEFAULT_SERVICE_TIMEOUT);
factory.setConnectTimeout(DEFAULT_SERVICE_TIMEOUT);
return factory;
}
}
Интеграционный тест:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TestConfiguration.class)
@WebAppConfiguration
@ActiveProfiles("it")
public abstract class IntegrationTest {}
Класс TestConfiguration:
@Configuration
@Import({Application.class, MockRestTemplateConfiguration.class})
public class TestConfiguration {}
И, наконец, MockRestTemplateConfiguration
@Configuration
public class MockRestTemplateConfiguration {
@Bean
public RestTemplate restTemplate() {
return Mockito.mock(RestTemplate.class)
}
}
Подробнее здесь: https://stackoverflow.com/questions/357 ... tion-tests
Переопределение bean-компонентов в интеграционных тестах ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как добавить имитируемый S3Client в контекст Spring в интеграционных тестах
Anonymous » » в форуме JAVA - 0 Ответы
- 42 Просмотры
-
Последнее сообщение Anonymous
-