es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Algo está mal con el error de SpringbootTest MockBean.

“`java
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = JeecgSystemApplication.class)
public class SampleTest {

<pre><code>@MockBean
private CodeGenerateDbConfig initCodeGenerateDbConfig;
</code></pre>

}

“`java
@Configuration
public class CodeGenerateDbConfig {

@Bean
public CodeGenerateDbConfig initCodeGenerateDbConfig() {
    if(StringUtils.isNotBlank(url)){
        CodegenDatasourceConfig.initDbConfig(driverClassName,url, username, password);
    }
    return null;
}

}

El error es:


Caused by: java.lang.IllegalStateException: No se puede registrar el mock bean org.jeecg.config.init.CodeGenerateDbConfig. Se esperaba un solo bean coincidente para reemplazar, pero se encontraron [codeGenerateDbConfig, initCodeGenerateDbConfig]

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error es causado por el hecho de que existen dos beans con el mismo nombre en el contexto de la aplicación – “codeGenerateDbConfig” y “initCodeGenerateDbConfig”. El bean simulado creado en la prueba no puede reemplazar el bean “initCodeGenerateDbConfig” porque hay dos beans con el mismo nombre.

    Para solucionar este error, podemos dar un nombre único al bean creado en la clase de configuración. Por ejemplo:

    @Configuration
    public class CodeGenerateDbConfig {
    
        @Bean(name = "initCodeGenerateDbConfig")
        public CodeGenerateDbConfig initCodeGenerateDbConfig() {
            if(StringUtils.isNotBlank(url)){
                CodegenDatasourceConfig.initDbConfig(driverClassName,url, username, password);
            }
            return null;
        }
    }
    

    Al especificar el nombre del bean como “initCodeGenerateDbConfig”, nos aseguramos de que solo haya un bean con este nombre en el contexto de la aplicación, y el bean simulado creado en la prueba puede reemplazarlo satisfactoriamente.

Comments are closed.