Spring Boot Rest 8/10 – Pruebas de integración

31

En el anterior artículo, revisamos cómo documentar nuestro proyecto con Swagger 2. En este artículo, revisaremos cómo realizar pruebas de integración de cada capa de la aplicación. 🍃

Dependencias

Como lo vimos en el primer artículo de esta serie, es necesario contar con las dependencias adecuadas para que las siguientes configuraciones funcionen, en este caso:

testImplementation 'de.flapdoodle.embed:de.flapdoodle.embed.mongo'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'

Probando los repositorios de Mongo DB

Para ejecutar pruebas de integración para los repositorios de Mongo DB, anotaremos nuestra clase de prueba con @DataMongoTest y con @RunWith(SpringRunner.class), de tal modo que nuestra prueba utilice la base de datos embebida de Mongo y la auto configuración de Spring Boot.

Añadiremos el repositorio de Café e inicializaremos Mongo DB con algunos datos de prueba para poder validar, desde el método anotado con @Before, que se ejecutará antes de cada método de prueba. Finalmente, haremos las llamadas a los métodos necesarios del repositorio y validaremos sus respuestas con los Asserts de JUnit, como en cualquier otra prueba.

@DataMongoTest
@RunWith(SpringRunner.class)
public class RepositoryTest {

    @Autowired
    private CoffeeRepository coffeeRepository;

    @Autowired
    private OrderRepository orderRepository;

    @Before
    public void loadTestingData() {
        List<Coffee> coffeeList;
        Coffee americano = Coffee.builder()
            .name("Americano")
            .description("Hot water to a shot of espresso coffee.")
            .price(2.0)
            .build();

        Coffee cappuccino = Coffee.builder()
                .name("Cappuccino")
                .description("Shot of espresso, then a shot of steamed milk, and finally a layer of frothed, foamy milk.")
                .price(2.5)
                .build();

        coffeeRepository.deleteAll();
        coffeeList = Arrays.asList(americano, cappuccino);
        coffeeRepository.saveAll(coffeeList);
    }

    @Test
    public void findCoffeeByNameTest() {
        Coffee coffee = coffeeRepository.findByName("Americano");
        assertNotNull(coffee);
        assertEquals("Americano", coffee.getName());
        assertEquals(new Double(2.0), coffee.getPrice());
    }

Nota que en este ejemplo estamos validando únicamente un método de un solo repositorio, puedes ver más ejemplos en el proyecto siendo a la liga de Github en el siguiente punto. 🤓

En el siguiente artículo, revisaremos cómo ejecutar localmente y empaquetar nuestra aplicación para su distribución. 😉

Repositorio de Github

Puedes encontrar el código del proyecto en el siguiente repositorio de Github:

https://github.com/chuucks/coffee-service


La configuración del proyecto de Spring Boot con Gradle, conexión a Mongo DB y autenticación básica de HTTP, en esta plataforma tiene únicamente fines educativos e ilustrativos. Para usar en producción requiere de mayores consideraciones, configuraciones y especificaciones. No dudes en contactarnos para cualquier duda o comentario o incluso abrir un Issue de Github en el repositorio del proyecto. 👍🏾

Comments

comments