Mock - teste Unitário

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:
@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.