0
respostas

Uma dúvida referente a testes unitários mock

Estou criando um teste para um método que tem um find de outro repository, inseri 2 mocks de repository, mas o primeiro para de funcionar

@ExtendWith(MockitoExtension.class)

@SpringBootTest(classes = { Translator.class, ResourceBundleMessageSource.class, LocaleResolver.class })


public class ClientServiceTest {

    @Mock
    private ClientRepository clientRepository;

    @Mock
    private CityRepository cityRepository;

    @InjectMocks
    private ClientService clientService;


    @Test
    public void findByIdTest() throws Exception {
        Client client = clientBuilder.client();
        when(clientService.getUser()).thenReturn(new KeycloackUserDTO<>());
        when(this.clientRepository.findById(1L)).thenReturn(Optional.of(client));
        this.clientService.findById(1L);
    }
}

quando vou chamar este fragmento

when(this.clientRepository.findById(1L)).thenReturn(Optional.of(client))

Da forma que está ele dá como em branco "Optional.empty"

Mas quando eu comento o outro repository este:

@Mock
private CityRepository cityRepository;

O teste dá certo "Optional[Cliente]"

Mas preciso de mockar o outro repository que é utilizado em outro teste, gostaria de saber o que acontece e qual seria a melhor solução