Boa noite, no FinalizarLeilaoService poderia usar @InjectMock ao invés de instanciar a classe? E o @Spy qual seria a finalidade prática?
Obrigado!!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite, no FinalizarLeilaoService poderia usar @InjectMock ao invés de instanciar a classe? E o @Spy qual seria a finalidade prática?
Obrigado!!
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!!