Testes unitários em Controllers com Spring MockMVC

Поділитися
Вставка
  • Опубліковано 13 гру 2024

КОМЕНТАРІ • 71

  • @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 !

  • @Airton8
    @Airton8 2 роки тому

    Parabéns e obrigado!

  • @elisiocanuto7327
    @elisiocanuto7327 2 роки тому

    Otima explicação muito obrigado !!

  • @marciomartins4111
    @marciomartins4111 2 роки тому

    Obrigado pelo conteúdo!

  • @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!

  • @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

  • @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 :)

  • @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!

  • @kynio08
    @kynio08 2 роки тому

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

  • @andersonrocha1979
    @andersonrocha1979 3 роки тому

    top demais... obrigado por compartilhar.

  • @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!

  • @13mvincius
    @13mvincius 2 роки тому

    Excelente explicação!

  • @JeffersonLuizCruz
    @JeffersonLuizCruz 4 роки тому

    Ficou show a explicação

  • @AndersonLopesabl
    @AndersonLopesabl 4 роки тому

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

    • @algaworks
      @algaworks  4 роки тому

      Opa, muito obrigado Anderson!

  • @RafaelBizi
    @RafaelBizi 4 роки тому

    Aula fantástica! Só tenho a agradecer!

  • @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

  • @feehhs2
    @feehhs2 3 роки тому

    Ótima aula!

  • @Chalbano
    @Chalbano 4 роки тому +1

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

  • @marcosradix1
    @marcosradix1 4 роки тому

    Topa cara, muito bem explicado!!

  • @luizc.jr.2064
    @luizc.jr.2064 4 роки тому

    Sensacional.... valeu!!

    • @algaworks
      @algaworks  4 роки тому

      Poxa, valeu mesmo Luiz!

  • @carloscazelattojr
    @carloscazelattojr 2 роки тому

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

  • @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!

  • @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?

  • @williamfranklin6924
    @williamfranklin6924 3 роки тому

    show

  • @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!

  • @buriti22
    @buriti22 4 роки тому

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

  • @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

  • @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.

  • @Chryst1anFRz
    @Chryst1anFRz 4 роки тому

    Onde acho material sobre como fazer Post?

  • @giltonnascimento2758
    @giltonnascimento2758 4 роки тому

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

  • @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?

  • @JulianLuis89
    @JulianLuis89 3 роки тому

    Qual a diferença do restassuredMockMvc pro mockMvc?

  • @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.

  • @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

  • @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.

  • @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 ua-cam.com/video/Gdn3jJLQP4s/v-deo.html

  • @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

  • @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.

  • @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.

  • @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.