Desactivar autoconfiguración de Mongo en tests de integración con Spring Boot

Puede interesar, escribiendo un test, querer levantar el contexto de Spring sin instanciar ciertos componentes como la capa de acceso a datos. De esta manera, se prueba cierta integración sin pasar horas definiendo mocks.

Spring Boot utiliza la propiedad spring.autoconfigure.exclude para excluir clases @Configuration y no instanciar los beans declarados en su interior. Se puede definir esta propiedad para desactivar la autoconfiguración de Spring Boot Data Mongo. Las clases que instancian los componentes necesarios para utilizar una base de datos Mongo son:

– org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration
– org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration

Se puede utilizar la anotación @TestPropertySource para inyectar las propiedades al contexto de Spring que se levanta al ejecutar el test con la anotación @SpringBootTest.

Por último, habría que inyectar un mock de mongoTemplate a los componentes que lo usen.

Y para muestra, un ejemplo insultántemente tonto:

@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource(properties = "spring.autoconfigure.exclude=
org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,
org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration")
public class DemoApplicationTests {

    @Configuration
    static class TestConfiguration {
        @MockBean private MongoTemplate mongoTemplate;
    }

    @Test
    public void integrationTestNotNeedingRepository() {
        Assert.assertTrue(true);
    }
}
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s