Pessoal, boa tarde.
Tudo bem.
Tenho uma classe de tipo Repository, para a comunicação JPA, a minha base e outra classe Service, para a realização das regras de negócios.
Entretanto, segue a classe responsável:
package br.com.projeto.minhasfinancas;
import br.com.projeto.minhasfinancas.executavel.Principal;
import br.com.projeto.minhasfinancas.model.entity.Usuario;
import br.com.projeto.minhasfinancas.model.repository.UsuarioRepository;
import br.com.projeto.minhasfinancas.service.UsuarioService;
import br.com.projeto.minhasfinancas.service.impl.UsuarioServiceImpl;
import org.checkerframework.common.reflection.qual.Invoke;
import org.junit.Assert;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.Spy;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.lang.NonNull;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.transaction.TestTransaction;
import org.springframework.transaction.annotation.Transactional;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.*;
import static org.mockito.Mockito.*;
@SpringBootTest(classes = TestApplication.class)//, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("dbproducao")
@ExtendWith({
MockitoExtension.class
})
public class UsuarioRepositoryTest {
@Mock
private UsuarioRepository usuarioRepository;
@Autowired
//@InjectMocks
private UsuarioServiceImpl usuarioServiceImpl;
private Usuario usuario = new Usuario();
@BeforeEach
public void inicializarDados(){
usuario=Usuario.builder()
.nome("Matheus Santos Andrade")
.email("[email removido]")
.senha("123456")
.build();
}
@Test
public void aDeveVerificarInserirDados(){
//cenario
when(usuarioRepository.save(any(Usuario.class))).thenReturn(usuario);
//acao
Usuario salvarUsuario = usuarioServiceImpl.salvarUsuario(usuario);
//assertThat(salvarUsuario.getEmail()).isNotNull();
Assertions.assertEquals("[email removido]",salvarUsuario.getEmail());
//verificacao
verify(usuarioRepository,times(1)).save(usuario);
verifyNoMoreInteractions(usuarioRepository);
}
@Test
public void aDeveVerificarQueExisteUmEmail(){
//acao
when(usuarioRepository.existsByEmail(usuario.getEmail())).thenReturn(Boolean.TRUE);
boolean resultadoVerificado = usuarioServiceImpl.validarEmail(usuario.getEmail());
//verificao
Assertions.assertTrue(resultadoVerificado);
verify(usuarioRepository,times(1)).existsByEmail(usuario.getEmail());
verifyNoInteractions(usuarioRepository);
}
}
Todavia, sempre que eu executo, o meu método responsável por inserção obtenho as devidas informações, logo abaixo.