Test de Controladores en Spring Boot con Mockito y JUnit usando MockMvc (WebMvcTest)

Sdílet
Vložit
  • čas přidán 5. 08. 2024
  • Aprenda a escribir pruebas unitarias para controladores en una aplicación Spring Boot con JUnit 5 (JUnit Jupiter), Spring Boot Test y Mockito .
    A continuación se muestra lo que aprenderá :
    - Comprender los principios en la prueba de la capa del controlador en Spring Boot .
    - Escribir pruebas unitarias para probar controladores en un proyecto Spring Boot .
    - Aprenderá a probar un controlador web simple (Spring MVC) .
    - Aprenderá a probar un controlador de servicios web RESTful simple .
    - Aprenderá a probar un controlador REST con el envío de datos como JSON en la solicitud .
    Test de repositorios en Spring Boot :
    • Pruebas JUnit para Spr...
    ⭐ Redes sociales
    ► Instagram : / christian_ramireezz
    ► Grupo de facebook : / 1708922592652065
    ► Facebook personal : profile.php?...
    ¿Te es útil mi contenido ? si la respuesta es si , te invito a que me apoyes 😊
    Donaciones :
    Yape : +51 999 509 829
    PayPal : www.paypal.com/paypalme/InfoL...
    Capítulos de la sección :
    00:00:00 - Conceptos básicos de Mockito
    00:05:08 - Creando el proyecto Spring Boot
    00:07:59 - Creando las entidades
    00:20:06 - Creando los repositorios
    00:22:18 - Creando el servicio
    00:35:24 - Creando la constante datos
    00:38:27 - Creando el controlador
    00:47:26 - Configurando Swagger
    00:54:44 - Creando la clase de Test
    00:55:15 - Añadiendo la anotación @WebMvcTest
    00:59:47 - Escribiendo el método de prueba para ver detalles
    01:19:41 - Escribiendo el método de prueba para transferir
    01:39:49 - Escribiendo el método de prueba para listar
    01:53:53 - Escribiendo el método de prueba para guardar registros
    #springboot#testing#spring
  • Věda a technologie

Komentáře • 107

  • @latecnologiaavanza
    @latecnologiaavanza  Před 2 lety +7

    ¿Te gustaría que este contenido siga siendo gratuito?, puedes apoyar al canal de las siguientes maneras:
    1 . Donaciones :
    PayPal : www.paypal.com/paypalme/InfoLibros/2usd
    Yape : +51 999 509 829
    2 . Compartiendo los vídeos del canal en foros y redes sociales .
    Cualquier opción es de gran ayuda. ¡Muchas gracias!
    Mas videos sobre Spring Boot :
    ✅Curso práctico de APIs REST con Spring Boot , JWT , Spring Security , MySQL y Spring Data JPA :
    czcams.com/video/dJaY43Butm8/video.html
    ✅Desarrollo de una API de servicios web RESTful para operaciones CRUD con MySQL en Spring Boot :
    czcams.com/video/s3CME_Pufww/video.html
    ✅Desarrollo de una búsqueda de filtros y CRUD con Spring Data JPA + Hibernate + MySQL y Thymeleaf :
    czcams.com/video/Lq7ueg1z4WA/video.html
    ✅Spring Boot + Angular - Full Stack I Mini curso - Desarrollo de una aplicación web :
    czcams.com/video/o_HV_FCs-Z0/video.html
    ✅Aplicación chat en Spring Boot y Angular utilizando WebSockets :
    czcams.com/video/1uvSOObbJ3k/video.html
    ✅CRUD en Spring Boot usando MySQL + Thymeleaf y Bootstrap :
    czcams.com/video/oF3XmiHgT-I/video.html
    ✅Pruebas JUnit para Spring Data JPA (Prueba de operaciones CRUD) :
    czcams.com/video/vFIzDLsbIkM/video.html
    ✅Inicio de sesión y registro de usuarios con Spring Security + Thymeleaf + MySQL y Bootstrap :
    czcams.com/video/0wTsLRxS3gA/video.html
    ✅Desarrollo de una agenda de contactos en Spring Boot :
    czcams.com/video/jDOg98z6m44/video.html
    ✅Desarrollo de una aplicación web de trailers en Spring Boot usando Thymeleaf + MySQL y Bootstrap :
    czcams.com/video/fEFn9HNOE1M/video.html

  • @milocaart
    @milocaart Před rokem

    Que forma tan genial de enseñar, muy fácil de entender la verdad, buena esa profe, super la manera de explicar, es entretenido y a la vez se aprende!!

  • @Naimadmdp
    @Naimadmdp Před 2 lety

    Excelente video como siempre!

  • @josealejandrorodriguezsuar4716

    Buen video parcero siga compartiendo conocimiento muchas gracias

  • @juandcg0331
    @juandcg0331 Před 2 lety

    Como siempre crack!, muy buen video.

  • @yako72
    @yako72 Před 2 lety +1

    Gracias por el conocimientos que compartes, muy buen contenido.

  • @janoso89
    @janoso89 Před 2 lety +1

    Flaco no te conozco pero te quiero hahaha buen contenido, bien explicado. Ando aprendiendo y esto viene super.

  • @angelmelara4039
    @angelmelara4039 Před 2 lety

    Gracias crack, justo esto buscaba

  • @josuealvarez5074
    @josuealvarez5074 Před 2 lety +1

    Gracias, muy buenos videos :D

  • @AppActualizadas
    @AppActualizadas Před 2 lety +1

    Excelente video, saludos

  • @tomasezequielboo4453
    @tomasezequielboo4453 Před rokem +1

    Buen video

  • @eldandady
    @eldandady Před 2 lety

    Excelente video, muchas gracias por compartir el conocimiento. Sugiero que hagas un tutorial de mensajería con Apache Kafka y RabbitMQ, muy buen contenido de tus videos.

  • @Saiyan2003
    @Saiyan2003 Před 2 lety +1

    Tan gozu!! :3

  • @aldhairhernandez3440
    @aldhairhernandez3440 Před 2 lety +1

    Me gustaría ver un video de un proyecto implementado con microsevicios, usando eureka o kafka, seria algo super, saludos!!
    Por cierto excelente video brother sigue asi...

  • @williamdiaz8900
    @williamdiaz8900 Před 2 lety +1

    Muchas gracias por compartir contenido, podrías realizar un vídeo de spring webflux.

  • @leandromorenn
    @leandromorenn Před 2 lety +1

    Podrías hacer un video explicando la api de criteria por favor?, buenisimo este video!

  • @marcosgutierrez8197
    @marcosgutierrez8197 Před 2 lety +1

    Excelente video crack!! quería consultarte si tienes algún vídeo de spring batch? Gracias de antemano

  • @lionear1004
    @lionear1004 Před 2 lety

    Será otro gran video,por cierto cuanto tiempo te tomo aprender todo acerca de spring masomenos?
    Yo recién estoy empezando con spring,seguro que tus vídeos me ayudarán mucho a expandir más mis conocimientos 😃

    • @latecnologiaavanza
      @latecnologiaavanza  Před 2 lety +1

      Gracias , ya voy un poco más de un año

    • @ramam7787
      @ramam7787 Před 2 lety

      @@latecnologiaavanza no puede ser, enserio tan poco? sos un crak

    • @latecnologiaavanza
      @latecnologiaavanza  Před 2 lety

      @@ramam7787 gracias , tu también lo puedes hacer mirando los cursos del canal

  • @conejomamon5193
    @conejomamon5193 Před 2 lety +1

    Gran video bro, sigo aprendiendo el tema de las pruebas que han Sido mi coco últimamente, pero una pregunta al hacer las pruebas con coverage abarca controladores pero no llega a los implements, sabes a qué se deba?
    Nota: cambie la estructura de los service en dos paquetes service y serviceImpl.
    Saludos!!
    Sigue así crack!!

    • @latecnologiaavanza
      @latecnologiaavanza  Před 2 lety

      Hola , no entiendo tu pregunta

    • @conejomamon5193
      @conejomamon5193 Před 2 lety +1

      @@latecnologiaavanza si, al correr las pruebas con cobertura no cubre los métodos implementados, será porque yo separé los services en dos paquetes? Service y ServiceImpl

    • @latecnologiaavanza
      @latecnologiaavanza  Před 2 lety

      @@conejomamon5193 todas las clases de de prueba tienen que estar en el paquete de test

  • @misaelflores5611
    @misaelflores5611 Před 2 lety

    Muchas gracias por el video,ayuda un monton y tengo una duda. Cuando quiero testear el controller del update me devuelve un 404 en vez del 200 que seria la respuesta correcta, el problema es que no encuentra los datos para poder updatearlos. Como podria "guardar" los datos antes del test en el mock para que luego al buscarlos pueda hacer el update nomalmente.

  • @megapanza6
    @megapanza6 Před 2 lety +1

    Hola amigo gracias por el aporte, por cierto no tienes link del repo para examinar el código?

  • @belalower8045
    @belalower8045 Před 2 lety

    algún tuto para optimizar eclipse valla mas rápido? a veces tengo cargado 2 o mas proyectos de spring y se queda como re cargando las dependencias mucho tiempo y eso q ya anteriormente estaban cargadas en dichos proyecto o tarda demasiado en abrir jeje

  • @abelacevedo4249
    @abelacevedo4249 Před 2 lety

    En el Controller no es de buena practica escribir código se hace en el ServiceImpl?

    • @latecnologiaavanza
      @latecnologiaavanza  Před 2 lety

      En el controller estan los métodos para acceder a nuestra API REST, no hay nada del service

  • @pjsilva613
    @pjsilva613 Před 2 lety

    Podrías por favor hacer tutos de quarkus, y micronaut

  • @sebastiansilvavidal452

    En el minuto 16, debes tener cuidado al momento de sobreescribir los métodos equals y hasCode porque para esos metodos debería tomarse como parametro un atributo que sea unico (por ejemplo el id), no hay que seleccionar todos los atributos como hiciste tu (id, persona y saldo); porque según eso para que dos cuentas sean iguales es necesario que tengan el id, la persona y el saldo igual, pero eso no es cierto; para que dos cuentas sean iguales basta con que tengan el id igual

  • @maritzadiaz1004
    @maritzadiaz1004 Před rokem

    yo le estoy haciendo el test a mi controlador de crear, pero me manda;Error No value at JSON path"$.primerNombre"

    • @latecnologiaavanza
      @latecnologiaavanza  Před rokem

      Hola te comparto un link para que te guíes
      stackoverflow.com/questions/33659684/assertion-error-no-value-for-json-path-in-junit-test

  • @luiszapata563
    @luiszapata563 Před 2 lety

    Hola Christian, cuando ejecutas el primer test (1:17:31) a ti te sale bien, pero a mi me saca este error: java.lang.AssertionError: JSON path "$.persona" expected: but was: y lo tengo todo igual a tu video, ya consulté en Google y no logro dar con la solucion. Tienes alguna idea para que me puedas ayudar? te lo agradeceré ya que no he podido avanzar más después de eso

    • @latecnologiaavanza
      @latecnologiaavanza  Před 2 lety

      Hola Luis te comparto una fuente para que logres solucionarlo
      stackoverflow.com/questions/49851158/expected-null-but-was-null-hamcrest-and-jsonpath

  • @nany3776
    @nany3776 Před rokem

    muy buen curso, por favor me puede facilitar el link del código?

  • @rubiramirezsantiago7996

    Holaaa, una pregunta, das asesorías privadas? Llevo dos días batallando con un tema de mockito y Junit, y por mas que busco no se como solucionarlo, no se si podrías apoyarme y obvio decirme el precio :)

    • @latecnologiaavanza
      @latecnologiaavanza  Před rokem

      Hola ,si realizo pero por el momento no por cuestiones de tiempo pero te recomiendo consultar en grupos de Facebook

    • @rubiramirezsantiago7996
      @rubiramirezsantiago7996 Před rokem

      @@latecnologiaavanza ahhh no me digas eso :c es que ya consulte todo jajajaja pero muchísimas gracias seguiré buscando :(, si llegas a tener un poco de tiempo, te deje un email igual :)

    • @latecnologiaavanza
      @latecnologiaavanza  Před rokem

      @@rubiramirezsantiago7996 Ok aunque lo dudo la verdad aunque estoy preparando un curso de Testing en Spring Boot , en unos días los publico y tal vez te puedas guiar de ahí

  • @maritzadiaz1004
    @maritzadiaz1004 Před rokem

    hola,para el eliminar como seria

  • @sebastianbetancur6031
    @sebastianbetancur6031 Před 2 lety

    en el metodo testguardarcuenta me aparece: JSON path "$.id"
    Expected: is
    but: was

    • @latecnologiaavanza
      @latecnologiaavanza  Před 2 lety

      Que raro cual es tu código?

    • @sebastianbetancur6031
      @sebastianbetancur6031 Před 2 lety

      @@latecnologiaavanza @Test
      void testguardarCuenta() throws JsonProcessingException, Exception {
      Cuenta cuenta = new Cuenta(null, "Esteban", new BigDecimal("3000"));
      when(cuentaServicio.save(any())).then(invocation -> { /*se puede colocar cuenta o any()*/
      Cuenta c = invocation.getArgument(0);
      c.setId(3L);
      return c;
      });
      mockMVC.perform(post("/api/cuentas").contentType(MediaType.APPLICATION_JSON)
      .content(objectMapper.writeValueAsString(cuenta)))
      .andExpect(content().contentType(MediaType.APPLICATION_JSON))
      .andExpect(jsonPath("$.id", is(3)))
      .andExpect(jsonPath("$.persona", is("Esteban")))
      .andExpect(jsonPath("$.saldo", is(3000)));
      verify(cuentaServicio.save(any()));

    • @latecnologiaavanza
      @latecnologiaavanza  Před 2 lety

      Trata de guardar con 3L el ID

  • @programadoronce935
    @programadoronce935 Před rokem

    buenas, no me funciona con swagger, despues de agregar las dependecias y las propiedades mi programa deja de correr

  • @edgarmorillo7505
    @edgarmorillo7505 Před 2 lety

    Donde consigo los repo de este proyecto ?

  • @victorcamilotepudjacome859

    Sabes programar para Android con NetBeans?

  • @cristianfergusburgosguzman6353

    tutorial de como poner arroba uno asi @

  • @alexperez-pu8ip
    @alexperez-pu8ip Před 2 lety

    donde has estudiado hermano?

  • @edgarpimentel6160
    @edgarpimentel6160 Před 2 lety

    Microservicio lider por favor

  • @leobardodenerysanchezvela4479

    Este curso de pruebas unitarias es desde 0 ??

    • @latecnologiaavanza
      @latecnologiaavanza  Před rokem

      No , pero para iniciar puede tomar este :
      czcams.com/video/cXQhvrWvgE8/video.html

  • @Lugburz666
    @Lugburz666 Před rokem

    La verdad es que hubiera preferido ver un ejemplo simple de Mockito, al final creas una aplicación compleja antes de hacer el Mock y al final es dificil seguirte

    • @latecnologiaavanza
      @latecnologiaavanza  Před rokem

      El título del vídeo dice test de controladores

    • @Lugburz666
      @Lugburz666 Před rokem

      @@latecnologiaavanza el título del vídeo es bastante más largo de lo que acabas de decir. No hagamos trampas. Y lo que llama la atención del vídeo son las herramientas que usas, no lo que haces.

    • @latecnologiaavanza
      @latecnologiaavanza  Před rokem

      @@Lugburz666 trampa ? Claramanente dice Mockito y eso estoy usando en el vídeo

    • @latecnologiaavanza
      @latecnologiaavanza  Před rokem

      @@Lugburz666 pero no te hagas problemas no veas mis vídeos y busca información en inglés y listo

  • @christiansanchez2217
    @christiansanchez2217 Před 2 lety +1

    y el git de los proyectos?

  • @oardude
    @oardude Před 6 měsíci

    me quede 0:46:00

  • @alexperez-pu8ip
    @alexperez-pu8ip Před 2 lety +1

    se sorprende saber que solo tienes 15 años

  • @sebastianbetancur6031
    @sebastianbetancur6031 Před 2 lety

    puedes subir el proyecto a github, porfavor

  • @ricardosanchez1021
    @ricardosanchez1021 Před 2 lety

    Excelente contenido bro, solo una duda, tengo problemas al testear el controller de verDetalles, me da este error "Field userDetailsService in com.ricardosanchez.app.configuration.SecurityConfig required a bean of type 'com.ricardosanchez.app.security.CustomUserDetailsService' that could not be found." imagino que es debido a que tengo la api con seguridad, es solo un basic.
    Como tendría que hacerlo en ese caso? Muchas gracias por tu ayuda y por estos excelentes tutoriales.

    • @latecnologiaavanza
      @latecnologiaavanza  Před 2 lety

      Hola , por el momento no tengo vídeos sobre eso pero puedes buscar en artículos en inglés sobre Spring boot