Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Faltou abordar sobre @InjectMock e @Spy

Boa noite, no FinalizarLeilaoService poderia usar @InjectMock ao invés de instanciar a classe? E o @Spy qual seria a finalidade prática?

Obrigado!!

2 respostas
solução!

Oi Julian,

O @InjectMock é apenas para simplificar mais ainda o código de testes, pois ele já instancia o objeto e injeta nele os mocks automaticamente:

@ExtendWith(MockitoExtension.class)
class FinalizarLeilaoServiceTest {

    @InjectMocks
    private FinalizarLeilaoService service;

    @Mock
    private LeilaoDao leilaoDao;

    @Mock
    private EnviadorDeEmails enviadorDeEmails;

    //nao precisa mais do metodo com @BeforeEach
}

Quanto a anotação @Spy, a diferença é que de fato os métodos do objeto serão invocados, diferente do @Mock que apenas "finge" que chamou o método.

O @Spy você utiliza quando quer utilizar um objeto real, e precisa verificar se os métodos dele foram chamados.

Rodrigo, agora ficou mais claro pra mim, muito obrigado!!