Für meine Spring-Boot-App stelle ich eine RestTemplate durch eine @Configuration-Datei zur Verfügung, damit ich sinnvolle Standardwerte hinzufügen kann (ex Timeouts). Für meine Integrationstests möchte ich das RestTemplate überspielen, da ich keine Verbindung zu externen Diensten herstellen möchte - ich weiß, welche Reaktionen zu erwarten sind. Ich habe versucht, eine andere Implementierung in das Integrationstestpaket zu geben, in der Hoffnung, dass letztere die reale Implementierung außer Kraft setzt, aber die Protokolle überprüfen, es ist umgekehrt: die reale Implementierung überschreibt die Testversion.
Wie kann ich sicherstellen, dass der eine aus der TestConfig verwendet wird?Überbrückende Beans in Integrationstests
Dies ist meine Config-Datei:
@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;
}
}
Integrationstest:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TestConfiguration.class)
@WebAppConfiguration
@ActiveProfiles("it")
public abstract class IntegrationTest {}
TestConfiguration Klasse:
@Configuration
@Import({Application.class, MockRestTemplateConfiguration.class})
public class TestConfiguration {}
Und schließlich MockRestTemplateConfiguration
@Configuration
public class MockRestTemplateConfiguration {
@Bean
public RestTemplate restTemplate() {
return Mockito.mock(RestTemplate.class)
}
}
Die Reihenfolge der Importe ändern, sie werden so analysiert, wie sie gelesen werden, also überschreiben die späteren die vorherigen. –
Versuchte es ... das Gleiche. Ich werde meine Frage aktualisieren, um die Änderungen widerzuspiegeln. – mvlupan
Mögliches Duplikat von [Überschreibe eine autovereinigte Bean in Unit Tests] (https://stackoverflow.com/questions/28605833/overriding-an-autowired-bean-in-unit-tests) – LoganMzz