私のSpring-Bootアプリでは、@Configurationファイルを介してRestTemplateを提供しているため、適切なデフォルト(タイムアウトなど)を追加できます。私の統合テストでは、外部サービスに接続したくないので、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)
}
}