Pessoal , tenho esse metodo aqui em uma classe service. Preciso aplicar teste Unitário nele , não é minha especialidade. Podem em dar uma luz?
To usando mockito.
Como ficaria isso na classe de test?
public List<SmDTO> simulacao(BigDecimal entrada, BigDecimal debito) {
List<SmDTO> listSmDTO = new ArrayList<SmDTO>();
BigDecimal valorRemanescente = debito.subtract(entrada);
List<ParcelaDeclarada> parcelaDeclarada = configuration.getParcelaDeclarada();
int size = tamanhoparcelaDeclarada.size();
for (int i = 0; i < size; i++) {
int nParcela = i + 1;
BigDecimal juros = parcelaDeclarada.get(i).getJuros();
List<CalculoJurosDTO> simulacao = calcular(nParcela, juros, entrada, valorRemanescente);
SmDTO smDTO = SmDTO.builder()
.nParcela(nParcela)
.juros(juros)
.valorRemanescente(valorRemanescente)
.entrada(entrada)
.debito(debito)
.listCalculatePriceDTO(simulacao)
.build();
listSmDTO.add(smDTO);
}
return listSmDTO;
}
De onde está vindo a variável configuration? Como ela é inicializada?
é só uma classe de configuração com algumas constantes
private final Configuração configuracao;
E como a configuração é iniciada nessa classe? Como ele recebe a instância? Em algum construtor? Através de um método setter?
Pergunto isso, pois a configuration é algo que vc vai precisar “mockar” no seu teste. E dependendo de como ela está sendo inicializada, nem precise usar o Mockito (o que é uma coisa boa).
Ela é iniciada dentro da classe mesmo , tenho um outro exemplo de classe que usa ela assim ![:slight_smile: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
@MockBean
private RefinancingConfiguration refinancingConfiguration;
Ah blz, acho que entendi a estrutura. Nesse caso, vc deve fazer o mock do método getParcelaDeclarada da configuration (coloque para retornar apenas um item de ParcelaDeclarada. Isso parece que já resolve.
Ah sim, o método calcular faz acesso à alguma outra coisa externa à essa classe que vc está testando?
Não, ele eh um metodo private da classe.
o getParcelaDeclarada é só pra retornar o numero maximo de parcelas que esta dentro de um arquivo de configurações sacou ?
isso aqui me baixo é só pra retornar no caso 11 que é o numero maximo de parcelas.
Tente fazer o mock assim:
List mockList = Collections.singletonList(Mockito.mock(ParcelaDeclarada.class))
Mockito.when(refinancingConfiguration.getParcelaDeclarada()).thenReturn(mockList);
Mostra ai o que vc jah conseguiu fazer do teste.