Testes unitários em Controllers com Spring MockMVC

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ธ.ค. 2024

ความคิดเห็น • 72

  • @sergiothiagoxtz
    @sergiothiagoxtz 3 ปีที่แล้ว +27

    O diferencial da algaworks é essa riqueza de detalhes, você sai entendendo o por que de cada coisa. Muito bom.

  • @alfredomenezes8814
    @alfredomenezes8814 2 ปีที่แล้ว +4

    Muito bom, depois de um dia inteiro tentando aprender a forma correta de fazer testes no Spring consegui com esse vídeo, valeu!

  • @elieldomartins1037
    @elieldomartins1037 ปีที่แล้ว

    Achei muito didática essa aula !

  • @aqueleestevao
    @aqueleestevao 4 ปีที่แล้ว +7

    Parabéns 🎉 to curtindo bastante os vídeos de vocês 🤘🏻 also, ótima explicação da diferença entre teste unitário e de integração e da importância dos mocks

    • @algaworks
      @algaworks  4 ปีที่แล้ว +1

      Valeu demais, Estevão! Fico feliz que os vídeos estejam agregando valor pra vocês!

  • @marciomartins4111
    @marciomartins4111 2 ปีที่แล้ว

    Obrigado pelo conteúdo!

  • @Airton8
    @Airton8 2 ปีที่แล้ว

    Parabéns e obrigado!

  • @Laos22007
    @Laos22007 4 ปีที่แล้ว +1

    Excelente explicação, de fácil entendimento. Muito bom para quem está começando no mundo de API como eu estou. Obrigado!

  • @ChandlerBing11
    @ChandlerBing11 4 ปีที่แล้ว +1

    Muito bom esse exemplo, Will! Parabéns pela didática e forma clara de expor os seus conhecimentos!

    • @algaworks
      @algaworks  4 ปีที่แล้ว +1

      Poxa, muito obrigado mesmo. Ficamos felizes em saber que tenha gostado :)

  • @elisiocanuto7327
    @elisiocanuto7327 2 ปีที่แล้ว

    Otima explicação muito obrigado !!

  • @13mvincius
    @13mvincius 3 ปีที่แล้ว

    Excelente explicação!

  • @kynio08
    @kynio08 2 ปีที่แล้ว

    Excelente Didática, muito bem expllicado. Gostaria de mais aulas sobre o uso do DDD nos testes Unitários

  • @danilokodavara9085
    @danilokodavara9085 4 ปีที่แล้ว +1

    Parabéns William, ótimo conteúdo. Explicação top;
    Comecei a fazer o curso Começando com Web Services RESTful e Spring, vou tentar acrescentar testes unitarios nos Controllers do curso .
    Muito Obrigado .

    • @algaworks
      @algaworks  4 ปีที่แล้ว +1

      Poxa, que massa Danilo!
      Pode ter certeza que vai agregar muito valor ao seu projeto!

  • @AndersonLopesabl
    @AndersonLopesabl 4 ปีที่แล้ว

    Parabéns Willian pelo conteúdo e pela excelente explicação.

    • @algaworks
      @algaworks  4 ปีที่แล้ว

      Opa, muito obrigado Anderson!

  • @andersonrocha1979
    @andersonrocha1979 3 ปีที่แล้ว

    top demais... obrigado por compartilhar.

  • @JeffersonLuizCruz
    @JeffersonLuizCruz 4 ปีที่แล้ว

    Ficou show a explicação

  • @RafaelBizi
    @RafaelBizi 4 ปีที่แล้ว

    Aula fantástica! Só tenho a agradecer!

  • @feehhs2
    @feehhs2 3 ปีที่แล้ว

    Ótima aula!

  • @luizc.jr.2064
    @luizc.jr.2064 4 ปีที่แล้ว

    Sensacional.... valeu!!

    • @algaworks
      @algaworks  4 ปีที่แล้ว

      Poxa, valeu mesmo Luiz!

  • @asilvadesa
    @asilvadesa 3 ปีที่แล้ว +5

    Faltou mostrar o import do Spring Mock MVC nas dependencias do Maven, e outro ponto que peguei um projeto que estou fazendo e tinha mais de um controller e mesmo usando o standaloneSetup na hora de compilar ele pedia as dependencias de outro controller.
    Para quem tiver esse basta add o classe do controller que vc quer isolar.
    No meu caso ficou assim.
    @WebMvcTest(CozinhaController.class)
    public class CozinhaControllerTest
    Qualquer duvida
    github.com/asilvadesa/algafood/blob/main/src/test/java/com/algaworks/algafood/api/controller/CozinhaControllerTest.java

    • @LuizHenrique-dr2df
      @LuizHenrique-dr2df 2 ปีที่แล้ว +1

      Valeu irmão, o meu tava dando o mesmo problema

  • @marcosradix1
    @marcosradix1 4 ปีที่แล้ว

    Topa cara, muito bem explicado!!

  • @erivelton84ribeiro
    @erivelton84ribeiro 2 ปีที่แล้ว

    Ótima aula.
    Mas minha dúvida é em como efetuar um teste com um objeto completo. Pode parecer bobo, mas é uma dpuvida que eu tenho.

    • @algaworks
      @algaworks  2 ปีที่แล้ว

      Olá Erivelton, poderia ser mais específico? O que seria esses objetos completos?

  • @matheusedisonbarkert1456
    @matheusedisonbarkert1456 4 ปีที่แล้ว +2

    Parabens, demorei pra encontrar algo que me ajudasse a testar o controller. Poderia fazer um video sobre como testar com o POST?

    • @algaworks
      @algaworks  4 ปีที่แล้ว +1

      Olá Matheus! Poxa, muito obrigado!
      Pode deixar que já anotei sua sugestão aqui para os próximos vídeos! :D

    • @Chryst1anFRz
      @Chryst1anFRz 4 ปีที่แล้ว

      Descobriu como?

    • @matheusbarkert6734
      @matheusbarkert6734 4 ปีที่แล้ว

      ​@@Chryst1anFRz Opa, descobri sim! Vou compartilhar com você o link dos testes de um projeto meu dai você da uma olhada.
      github.com/Matheus-Barkert/Desafio-Pautas/tree/master/src/test/java/br/com/compasso/DesafioPauta/controller

    • @Chryst1anFRz
      @Chryst1anFRz 4 ปีที่แล้ว

      @@matheusbarkert6734 Muito obrigado!

  • @carloscazelattojr
    @carloscazelattojr 2 ปีที่แล้ว

    Vc tem algum exemplo de teste onde valida/confere paginação(pageable) ?

  • @emanuelpaivamedeiros7424
    @emanuelpaivamedeiros7424 4 ปีที่แล้ว +4

    Quem quiser a versão "virgem" do projeto pra codar junto ao William, só clonar o repo: github.com/Nel-Medeiros/algaworks-videoaula-spring-mockController-start

  • @paulooliveira5724
    @paulooliveira5724 3 ปีที่แล้ว

    Explicação excelente! A algaworks tem algum curso que aborda testes unitários com Spring? Pesquisei e não encontrei. Tenho bastante interesse nesse tema. Bem que o William poderia ser o instrutor desse curso se não tiver!

  • @Chalbano
    @Chalbano 4 ปีที่แล้ว +1

    Eu só faço teste unitário em Controllers! Assim consigo testar o cenário completo de ponta a ponta!

  • @giltonnascimento2758
    @giltonnascimento2758 4 ปีที่แล้ว

    Achei interessante, como faço para aprender mais?!

  • @buriti22
    @buriti22 4 ปีที่แล้ว

    Grande Willian... como eu faço quando tenho Autenticação com JWT?

  • @rafaelcardoso8831
    @rafaelcardoso8831 4 ปีที่แล้ว

    Muito bom !!!
    Quando preciso mockar um repositorio, segue a mesma linha , de como foi mockada a service ???

    • @algaworks
      @algaworks  4 ปีที่แล้ว +1

      Olá Rafael!
      Exatamente o mesmo processo, na verdade para qualquer componente, nós que indicamos o comportamento do método quando receber determinados parâmetros.

    • @rodrigo6956
      @rodrigo6956 4 ปีที่แล้ว

      @@algaworks Nesse caso mesmo assim, para eu conseguir subir o projeto para testes o servidor do banco precisa estar ligado né? Fui fazer com ele desligado e deu um erro quando foi subir o projeto.

  • @adrianomelos
    @adrianomelos 4 ปีที่แล้ว +1

    Cara muito bom o seu vídeo, entende muito do assunto mas em um dos meus teste deu o seguinte erro faz ideia do que pode ser? java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

  • @Chryst1anFRz
    @Chryst1anFRz 4 ปีที่แล้ว

    Onde acho material sobre como fazer Post?

  • @a.g.4607
    @a.g.4607 4 ปีที่แล้ว +1

    That's strange... my environment doesn't found that class: Rest AssuredMockMvc. i have tried to import it...
    idk how I can import io.restassured.module.mockmvc.RestAssuredMockMvc; gradle

    • @philippesousa1151
      @philippesousa1151 4 ปีที่แล้ว +1

      you must import on your gradle file // mvnrepository.com/artifact/io.rest-assured/rest-assured
      testCompile group: 'io.rest-assured', name: 'rest-assured', version: '4.3.1'

  • @vitorsantosdasilva6538
    @vitorsantosdasilva6538 4 ปีที่แล้ว

    Muito bom! Apesar de meu arquivo pom.xml já está com o lombok adicionado. Infelizmente o lombok aqui não gerou nenhum método. Teria algum procedimento prévio a ser realizado?

    • @algaworks
      @algaworks  4 ปีที่แล้ว

      Opa, valeu mesmo Vitor!
      Você chegou a fazer a instalação do plugin do Lombok na sua IDE?

    • @vitorsantosdasilva6538
      @vitorsantosdasilva6538 4 ปีที่แล้ว

      @@algaworks Hummm, não fiz a instalação do plugin, achei q fosse baixar automaticamente via maven.

    • @algaworks
      @algaworks  4 ปีที่แล้ว +2

      @@vitorsantosdasilva6538 Ah, realmente é necessário instalar também o plugin, a dependência do Maven vai adicionar a funcionalidade à sua aplicação.
      Mas para a IDE reconhecer esses códigos gerados durante o build é necessário o plugin.
      Você pode baixar o plugin direto do site oficial, é bem simples de instalar: projectlombok.org/download

  • @jogatinandodevs
    @jogatinandodevs 4 ปีที่แล้ว

    Tenho problemas com testes unitarios quando se trata de fazer login usando MockMVC ou JUnit mesmo para logar em um redis (sem possuir redis local). Não tenho como usar o Redis localmente, mas preciso conseguir testar os metodos de login e os metodos q necessitam de authenticação (Bearer) para saber q tudo esta funcionando corretamente. Usamos MongoDB, JUnit 4 e MockMVC para tentar fazer os testes. Pode me auxiliar?

  • @williamfranklin6924
    @williamfranklin6924 3 ปีที่แล้ว

    show

  • @wscatao
    @wscatao 3 ปีที่แล้ว

    Aula muito boa, muito bem explicado e direto ao ponto, sugestão, diminuir um pouco o volume da voz na gravação, da pra ouvir tu engolindo saliva e isso não é legal.

  • @JulianLuis89
    @JulianLuis89 3 ปีที่แล้ว

    Qual a diferença do restassuredMockMvc pro mockMvc?

  • @flaviorodrigues5174
    @flaviorodrigues5174 4 ปีที่แล้ว

    Excelente Will. Parabéns!
    Se puder dá uma dica. Quando vou rodar o teste, encontro um problema com o construtor na classe filme:
    Quando vou debugar acho:
    java: constructor Filme in class br.com.algaworks.filmes.model.Filme cannot be applied to given types;
    required: no arguments
    found: java.lang.Long,java.lang.String,java.lang.String
    reason: actual and formal argument lists differ in length.
    Diz que o problema está na linha 15 onde tem a chaves fechando a classe.
    LIsta de argumentos diferem em tamanho?

    • @CiryanGG
      @CiryanGG 2 ปีที่แล้ว

      um ano após, achou essa resposta? to com esse problema.

  • @felipemacedocomputacao
    @felipemacedocomputacao 3 ปีที่แล้ว

    o quanto um programador java junior deve saber testes para entrar no mercado?

    • @ludwigwantwi7484
      @ludwigwantwi7484 3 ปีที่แล้ว

      só mais o unitário, pois geralmente tem uma área só pra profissionais de testes

  • @antoniocarloszxc
    @antoniocarloszxc ปีที่แล้ว

    Se a controller tiver autenticação, como faço para resolver?

    • @algaworks
      @algaworks  ปีที่แล้ว +1

      Insira o pacote de testes do Spring Security no projeto.
      Com ele, vem as annotations @WithUserDetails, @WithUser que injetam um usuário autenticado nos testes.
      Temos uma aula sobre isso no nosso canal.

    • @algaworks
      @algaworks  ปีที่แล้ว +1

      @algaworks th-cam.com/video/Gdn3jJLQP4s/w-d-xo.html

  • @eudesbatista6461
    @eudesbatista6461 4 ปีที่แล้ว +1

    Não entendi por que os nomes dos metodos foram separados por underline se no Java o padrão é CamelCase e por que a importação de todos ? Isso não carrega informação desnecessária?

    • @professordaniloalmeida
      @professordaniloalmeida 4 ปีที่แล้ว +1

      No caso de teste foge um pouco a nomeação de métodos, não há problemas usar outro padrão já que este método não é usado fora da própria classe e sim só para a escrita do teste. Com relação a importação vai carregar todos os métodos statics, mas como se usa muita coisa nos testes não é tão problema assim. A legibilidade do teste fica acima do desempenho, principalmente porque o teste só roda na compilação.

    • @algaworks
      @algaworks  4 ปีที่แล้ว

      @@professordaniloalmeida muito boa explicação, é exatamente isso.
      O custo de se fazer esse import não é tão caro. E como foi muito bem colocado por você, os testes unitários só rodam na sua própria fase, o que não impacta no projeto como um todo.

  • @giltonnascimento2758
    @giltonnascimento2758 4 ปีที่แล้ว

    Por qual motivo ao lançar uma exceção fico obtendo 500 ao invés de 404 ao buscar por um item não existem? Alguma ideia?

    • @janssenolimpio7984
      @janssenolimpio7984 3 ปีที่แล้ว

      Os códigos de status 500-599 representam erro no servidor. Tenta no bloco catch lançar um Response Body com o status code desejado.

  • @crocodilion
    @crocodilion 2 ปีที่แล้ว

    17:00

  • @micheleckhardt6067
    @micheleckhardt6067 4 ปีที่แล้ว

    Faltou o teste passando o body de um post

  • @relaxed.stories
    @relaxed.stories 4 ปีที่แล้ว

    english me bana de bhai :)

  • @iaskarapimentel5955
    @iaskarapimentel5955 2 ปีที่แล้ว

    Excelente material!!!
    Eu estou encarando um erro, gostaria de saber se alguém teve algo parecido.
    "java.lang.IllegalStateException: delegate cannot be null. Ensure a Bean with the name springSecurityFilterChain implementing Filter is present or inject the Filter to be used."

    • @algaworks
      @algaworks  2 ปีที่แล้ว

      Fala mergulhadora!
      Você provavelmente tem o Spring Security configurado no projeto, sendo assim, o mais fácil é realizar um teste com todos os componentes do Spring carregados.
      Para isso, utiliza a Annotation @SpringBootTest ao invés de @WebMvcTest.