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.

Comparar 2 DTO no idénticos pero que tienen propiedades en común en Fluent Assertion.

Estoy escribiendo una prueba de unidad para un mapeador manual. Mapea un objeto a dos clases diferentes pero tienen propiedades comunes. ¿Cómo comparar si sus propiedades son iguales en Fluent Assertion?

Esto es lo que intenté:

var domain = new Domain.ConsentDefinition()
{
     SomeProperty = 1,
     ListOfFirstDTO = new List<firstdto>()
     {
          new FirstDTO()
          {
             Name = "Label",
             Age = 18,
          }
     },
     SomeOtherProperty = "one"
}

ef = domain.ToEF();

domain.SomeProperty.Should().Be(ef.SomeProperty);
domain.SomeOtherProperty.Should().Be(ef.SomeOtherProperty);
domain.ListFirstDTO.Should().Equal(ef.ListOfSecondDTO); // Esto no funciona

Clases:

“`csharp
public class FirstDTO
{
public string Name {get;set;}
public int Age {get;set;}
}

public class SecondDTO
{
public string Name {get;set;}
public int Age {get;set;}
public string Email {get;set;}
}
“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para comparar las propiedades de las dos clases diferentes, puedes usar el método BeEquivalentTo de Fluent Assertion. Este método compara las propiedades de los objetos sin importar su tipo y también admite objetos anidados complejos.

    En tu caso, puedes actualizar la afirmación para comparar ListOfFirstDTO y ListOfSecondDTO de la siguiente manera:

    domain.ListOfFirstDTO.Should().BeEquivalentTo(ef.ListOfSecondDTO);
    

    Esto comparará los elementos de ambas listas utilizando sus propiedades, y pasará si ambas listas tienen los mismos elementos sin importar el orden. Si deseas comparar también el orden de los elementos, puedes usar BeEquivalentTo con la opción WithStrictOrdering:

    domain.ListOfFirstDTO.Should().BeEquivalentTo(ef.ListOfSecondDTO, options => options.WithStrictOrdering());
    

    Esto pasará solo si ambas listas tienen los mismos elementos en el mismo orden.

Comments are closed.