Dla mojej aplikacji Spring-Boot udostępniam szablon RestTemplate, ale plik @Configuration, dzięki czemu mogę dodawać rozsądne wartości domyślne (np. Timeout). Dla moich testów integracyjnych chciałbym wyśmiewać się z RestTemplate, ponieważ nie chcę łączyć się z usługami zewnętrznymi - wiem, jakich reakcji oczekiwać. Próbowałem dostarczyć inną implementację w pakiecie testu integracji w nadziei, że ta ostatnia zastąpi prawdziwą implementację, ale sprawdzenie dzienników jest odwrotne: prawdziwa implementacja zastępuje testową.
Jak mogę się upewnić, że ten z TestConfig jest używany?Przesłanianie fasoli w testach integracji
To jest mój plik konfiguracyjny: test
@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;
}
}
Integracja:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TestConfiguration.class)
@WebAppConfiguration
@ActiveProfiles("it")
public abstract class IntegrationTest {}
klasa TestConfiguration:
@Configuration
@Import({Application.class, MockRestTemplateConfiguration.class})
public class TestConfiguration {}
I wreszcie MockRestTemplateConfiguration
@Configuration
public class MockRestTemplateConfiguration {
@Bean
public RestTemplate restTemplate() {
return Mockito.mock(RestTemplate.class)
}
}
Zmienia kolejność importów, są one przetwarzane w taki sposób, aby były odczytywane, więc nowsze zastępują poprzednie. –
Wypróbowałem ... to samo. Zaktualizuję moje pytanie, aby odzwierciedlić zmiany – mvlupan
Możliwy duplikat [Zastąpienie automatycznie wykopanego ziarna w testach jednostkowych] (https://stackoverflow.com/questions/28605833/overriding-an-autowired-bean-in-unit-tests) – LoganMzz