preciso testar um metodo que usa native query. Porém na linha
Query q = em.createNativeQuery(strQuery, Projeto.class);
Não se atribui valor nenhum a q e ele fica nulo. Alguém pode me ajudar?
Segue metodo que quero testar (que está na classe ProjetoServiceImpl) :
@Override
public Page<Projeto> buscaAtestadosComFiltro(String[] filtros, PageRequest pageRequest) {
String strQuery = montaQueryAtestadoComFiltro(filtros);
Query q = em.createNativeQuery(strQuery, Projeto.class);
Page<Projeto> result = new PageImpl<Projeto>(q.getResultList());
return result;
}
e minha classe de teste:
@SpringBootTest
@RunWith(SpringRunner.class)
@ActiveProfiles("test")
public class ProjetoServiceImplTest {
Projeto projeto1;
@Mock
private EntityManager manager;
@InjectMocks
private ProjetoServiceImpl projImpl = new ProjetoServiceImpl();
@Before
public void setup() {
projeto1 = new Projeto();
projeto1.setId(1L);
}
@Test
public void testaBuscaAtestadosComFiltro() {
List<Projeto> projetos = new ArrayList<Projeto>();
projetos.add(projeto1);
Query query = mock(Query.class);
Mockito.when(manager.createNativeQuery("java",Projeto.class)).thenReturn(query);
Mockito.when(query.getResultList()).thenReturn(projetos);
String[] filtros = new String[] {"java"};
PageRequest pageRequest = new PageRequest(0, 12,Direction.valueOf("DESC"), "id");
Page<Projeto> result = projImpl.buscaAtestadosComFiltro(filtros, pageRequest);
assertNotNull(result);
}
Alguém pode me ajudar?