Olá, Estou fazendo os testes de uma service. No método de cadastrar, ele transforma a classe "LocalForm" em "Local".
O metodo salvar() é publico e ja está testado. Porém não estou achando um jeito de testar o metodo "converterParaLocal(form)". Tentei com mockito, mas ai ele retorna exception dizendo que precisa ser uma classe que mockada (O que n pode ser, pois é a mesma classe que estou testando).
Em resumo, o que eu quero testar é somente "converterParaLocal(form)" que é um método privado, entao não posso chamá-lo diretamente através da service. Preciso fazer assertivas se está retornando um Local com os valores de atributos passados pelo LocalForm
public Local cadastrar(LocalForm form) {
return salvar(converterParaLocal(form));
}
private Local converterParaLocal(LocalForm form) {
return Local.builder()
.nome(form.getNome())
.endereco(form.getEndereco())
.build();
}
@Transactional
public Local salvar(Local local) {
return localRepository.save(local);
}
A classe de testes esta assim
class LocalServiceTest extends ServiceTestConfig{
@InjectMocks
private LocalService localService;
@Mock
private LocalRepository localRepositoryMock;
//outros testes omitidos
@Test
void cadastrar_DeveTransformarLocalFormEmLocal_QuandoRecebeUmLocalFormComTodosDadosObrigatoriosPreenchidos() {
//Preciso capturar o retorno do metodo privado interno da service que estou testando -> converterParaLocal(form)
Local localCadastrado = localService.cadastrar(Util.criarLocalForm());
assertThat(localCadastrado.getNome()).isEqualTo(Util.criarLocalForm().getNome());
assertThat(localCadastrado.getEndereco()).isEqualTo(Util.criarLocalForm().getEndereco());
}