1
resposta

Mocks-Aula03-Atividade05

Foi pedido no exercício para escrever um teste que garanta que mesmo que uma exceção seja lançada na execução de um envio de e-mail para um determinado leilão, o objeto EncerradorDeLeilao deve continuar a executar as atualizações e envio de e-mail para os demais leilões, porém o código do instrutor, similar ao abaixo;

doThrow(new RuntimeException()).when(fakeSenderEmail).envia(leilao1);

        EncerradorDeLeilao encerrador = new EncerradorDeLeilao(daoFalso, fakeSenderEmail);
        encerrador.encerra();

        verify(daoFalso).atualiza(leilao2);
        verify(fakeSenderEmail).envia(leilao2);

ao meu entender, não garante que o objeto EncerradorDeLeilao vai continuar sua execução normal para os outros leilões ao de uma exceção no método de envio de e-mail, pois mesmo ao mudar os duas verificações do código acima para utilizarem o leilao1(o qual estamos lançando uma exceção) a execução do teste ocorre com sucesso. Estou certo no meu entendimento?

Dei uma resposta diferente a este exercício, que ao meu ver, realmente garante o funcionamento normal do objeto EncerradorDeLeilao nas condições de exceção mencionadas acima, gostaria de saber se minha resposta está correta.

1 resposta

Angelo, tudo bem?

Não lembro da implementação do instrutor, mas senão me engano ele faz um try catch para validar se fechou ou não o leilão. Em seguida ele precisa validar independente se deu erro ou não e lançar mesmo assim o email.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software