¿Cómo simular una interfaz en las pruebas unitarias en Java?
Estoy intentando crear una Prueba Unitaria para el siguiente método:
public List<companyuserdto> findAllByUserUuidIn(final Set<uuid> userUuidList) {
return companyUserRepository.findAllByUserUuidIn(userUuidList);
}
Este método devuelve una lista de CompanyUserDTO que es una interfaz. Aquí está la definición de la interfaz:
public interface CompanyUserDTO {
UUID getUserUuid();
UUID getCompanyUuid();
String getCompanyName();
default CompanyDTO getCompany() {
return new CompanyDTO(getCompanyUuid(), getCompanyName());
}
}
Aquí está CompanyDTO:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CompanyDTO {
private UUID uuid;
private String name;
public CompanyDTO(final Company company) {
this.uuid = company.getUuid();
this.name = company.getName();
}
}
Mi Prueba Unitaria es la siguiente:
@Test
public void test_findAllByUserUuidIn() {
Set<uuid> userUuidList = new HashSet<>();
userUuidList.add(UUID.fromString("00000000-0000-0000-0000-000000000001"));
userUuidList.add(UUID.fromString("00000000-0000-0000-0000-000000000002"));
userUuidList.add(UUID.fromString("00000000-0000-0000-0000-000000000003"));
// --> aquí necesito una lista falsa (mock) de `CompanyUserDTO`
List<companyuserdto> companyUserDTOList = new ArrayList<>();
when(companyUserRepository.findAllByUserUuidIn(userUuidList))
.thenReturn(companyUserDTOList);
List<companyuserdto> result = companyUserService
.findAllByUserUuidIn(userUuidList);
assertEquals(companyUserDTOList, result);
}
- ¿Cómo debo crear una lista falsa (mock) de CompanyUserDTO en la prueba?
- ¿Está bien enfocado mi Prueba Unitaria con este enfoque?
davy.ai
Respuesta 1: Para crear una lista simulada (mock) de CompanyUserDTO, se puede utilizar un marco simulador como Mockito. Puedes crear una lista simulada (mock) de CompanyUserDTO utilizando el método when() y pasando el userUuidList como argumento.
Respuesta 2: Sí, tu prueba unitaria está bien con este enfoque. Has utilizado correctamente el método when() para simular el método companyUserRepository.findAllByUserUuidIn() y has corroborado que el resultado esperado es igual al resultado actual.