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;}
}
“`
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
yListOfSecondDTO
de la siguiente manera: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ónWithStrictOrdering
:Esto pasará solo si ambas listas tienen los mismos elementos en el mismo orden.