简体   繁体   English

从 Spring-Boot 测试中排除 elasticsearchTemplate

[英]Exclude elasticsearchTemplate from Spring-Boot Test

I have an application that use Elasticsearch and I'd like to disable this integration when I'm testing some controllers.我有一个使用 Elasticsearch 的应用程序,我想在测试某些控制器时禁用此集成。 How can I disable elasticsearchTemplate on Spring-Boot test?如何在 Spring-Boot 测试中禁用 elasticsearchTemplate?

Application.class:应用。class:

@SpringBootApplication
@EnableElasticsearchRepositories(basePackages = "com.closeupinternational.comclosure.elasticsearch")
public class Application {
...

Repository.class:存储库.class:

@Repository
public interface PipelineRepository extends ElasticsearchRepository<Pipeline, String> {
...

Test Controller.class:测试 Controller.class:

@ExtendWith(SpringExtension.class)
@EnableAutoConfiguration(exclude = {ElasticsearchDataAutoConfiguration.class,
ElasticsearchRepositoriesAutoConfiguration.class})
@WebMvcTest(ProductionCycleExecutionController.class)
@Slf4j
public class ProductionCycleExecutionControllerTest {

    @Autowired
    private MockMvc mvc;

    @MockBean
    private ProductionCycleExecutionService prodCycleExecService;

    ...

I'm not using inside ProductionCycleExecutionService and don't wanna try to test elasticsearch repository PipelineRepository at this moment.我现在没有在 ProductionCycleExecutionService 内部使用,也不想尝试测试 elasticsearch 存储库 PipelineRepository。

Error:错误:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pipelineRepository' defined in 
com.closeupinternational.comclosure.elasticsearch.PipelineRepository defined in
 @EnableElasticsearchRepositories declared on Application: Cannot resolve reference to bean 
'elasticsearchTemplate' while setting bean property 'elasticsearchOperations'; nested exception is org.springframework.beans.factory

Just remove @ExtendWith(SpringExtension.class) and @EnableAutoConfiguration(exclude = {ElasticsearchDataAutoConfiguration.class, ElasticsearchRepositoriesAutoConfiguration.class})只需删除@ExtendWith(SpringExtension.class)@EnableAutoConfiguration(exclude = {ElasticsearchDataAutoConfiguration.class, ElasticsearchRepositoriesAutoConfiguration.class})

These annotations aim to bootstrap the whole Spring context and configure it这些注释旨在引导整个 Spring 上下文并对其进行配置

@WebMvcTest should be enough in your case as it bootstraps web-related context only @WebMvcTest在您的情况下应该足够了,因为它仅引导与 Web 相关的上下文

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM