es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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);
}
  1. ¿Cómo debo crear una lista falsa (mock) de CompanyUserDTO en la prueba?
  2. ¿Está bien enfocado mi Prueba Unitaria con este enfoque?
Tags:  , , , ,

Answer

  1. Avatar for 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.

Comments are closed.