Oi,
Eu estou criando testes para uma classe de servico, criei um mock do repository, mas esta dando esse erro,
java.lang.ClassCastException: org.mockito.codegen.Object$MockitoMock$1744577968 cannot be cast to br.com.janadev.model.Cliente
Minha classe de servico chama o repository para persistir as informacoes no banco, entao criei um mock para o repository na classe de teste. Minha classe de teste esta assim,
public class ClienteServiceImplTest {
@Mock(answer = Answers.RETURNS_SMART_NULLS)
CustomerRepository repository;
@InjectMocks
CustomerServiceImpl service;
public Address address = null;
public Customer customer = null;
public CustomerRequestDTO requestDto = null;
public CustomerResponseDTO responseDto = null;
@BeforeEach
public void setUp() {
MockitoAnnotations.initMocks(this);
address = new Address("Rua da Jana", 2051, "Bairro da Jana", "04735400", "São Paulo", "SP");
customer = new Customer("44140948756", "Janaina", address, "11960314430");
customer.setId(1l);
requestDto = new CustomerRequestDTO(customer.getCpf(), customer.getName(), customer.getAddress(),
customer.getPhone(), customer.getActive());
responseDto = new CustomerResponseDTO(customer);
}
@Test
public void should_createCustomer_when_sendCustomer() {
doReturn(customer).when(repository).save(customer);
CustomerResponseDTO responseDTO = service.createCustomer(requestDto);
assertEquals("44140948756", responseDTO.getCpf());
assertEquals("Janaina", responseDTO.getName());
assertEquals("04735400", responseDTO.getAddress().getZipCode());
assertEquals("11960314430", responseDTO.getPhone());
}
}
Nao sei se eu posso criar um mock do Repository sendo ele uma interface e tambem tenho duvidas se por a minha classe Cliente ter metodos estaticos fromDto() e toDto() possa estar causando isso. Pesquisei mas nao encontrei algo que me ajudasse.
Desculpa estar escrevendo sem a acentuacao e com pontuacao errada meu teclado esta maluco.