Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro Teste

meu teste não funciona por qual motivo? vi o vídeo diversas vezes e não encontrei o erro Quando vou testar o Mock dá erro

package br.com.alura.leilao.service;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.alura.leilao.dao.LeilaoDao;
import br.com.alura.leilao.model.Lance;
import br.com.alura.leilao.model.Leilao;

@Service
public class FinalizarLeilaoService {

    private LeilaoDao leiloes;
    private EnviadorDeEmails enviadorDeEmails;

    @Autowired
    public FinalizarLeilaoService(LeilaoDao leiloes, EnviadorDeEmails enviadorDeEmails) {
        this.leiloes = leiloes;
    }

    public void finalizarLeiloesExpirados() {
        List<Leilao> expirados = leiloes.buscarLeiloesExpirados();
        expirados.forEach(leilao -> {
            Lance maiorLance = maiorLanceDadoNoLeilao(leilao);
            leilao.setLanceVencedor(maiorLance);
            leilao.fechar();
            leiloes.salvar(leilao);    

            enviadorDeEmails.enviarEmailVencedorLeilao(maiorLance);
        });
    }

    private Lance maiorLanceDadoNoLeilao(Leilao leilao) {
        List<Lance> lancesDoLeilao = new ArrayList<>(leilao.getLances());
        lancesDoLeilao.sort((lance1, lance2) -> {
            return lance2.getValor().compareTo(lance1.getValor());
        });
        return lancesDoLeilao.get(0);
    }

}
package br.com.alura.leilao.service;

import static org.junit.jupiter.api.Assertions.*;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import org.junit.Assert;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;

import br.com.alura.leilao.dao.LeilaoDao;
import br.com.alura.leilao.model.Lance;
import br.com.alura.leilao.model.Leilao;
import br.com.alura.leilao.model.Usuario;

class FinalizarLeilaoServiceTest {

    private FinalizarLeilaoService service;

    @Mock
    private LeilaoDao leilaoDao;

    @Mock
    private EnviadorDeEmails enviadorDeEmails;

    @BeforeEach
    public void beforeEach() {
        MockitoAnnotations.initMocks(this);
        this.service = new FinalizarLeilaoService(leilaoDao, enviadorDeEmails);
    }

    @Test
    void deveriaFinalizarUmLeilao() {
        List<Leilao> leiloes = leiloes();
        Mockito.when(leilaoDao.buscarLeiloesExpirados()).thenReturn(leiloes);
        service.finalizarLeiloesExpirados();

        Leilao leilao = leiloes.get(0);
        Assert.assertTrue(leilao.isFechado());
        Assert.assertEquals(new BigDecimal("900"), leilao.getLanceVencedor().getValor());

        Mockito.verify(leilaoDao).salvar(leilao);
    }

    @Test
    void deveriaEnviarEmailParaVencedorDoLeilao() {
        List<Leilao> leiloes = leiloes();

        Mockito.when(leilaoDao.buscarLeiloesExpirados()).thenReturn(leiloes);

        service.finalizarLeiloesExpirados();

        Leilao leilao = leiloes.get(0);
        Lance lanceVencedor = leilao.getLanceVencedor();        

        Mockito.verify(enviadorDeEmails).enviarEmailVencedorLeilao(lanceVencedor);
    }

    private List<Leilao> leiloes() {
        List<Leilao> lista = new ArrayList<>();

        Leilao leilao = new Leilao("Celular",
                        new BigDecimal("500"),
                        new Usuario("Fulano"));

        Lance primeiro = new Lance(new Usuario("Beltrano"),
                        new BigDecimal("600"));
        Lance segundo = new Lance(new Usuario("Ciclano"),
                        new BigDecimal("900"));

        leilao.propoe(primeiro);
        leilao.propoe(segundo);

        lista.add(leilao);

        return lista;

    }

}
1 resposta
solução!

já localizei o erro. falava complementar o Mockito em dois métodos

Mockito.verifyNoInteractions