Fluent Assertions 6: Comparando dos colecciones con diferentes tipos y nombres de miembros.
En las versiones anteriores de Fluent Assertions, había una posibilidad de comparar dos colecciones con diferentes tipos y nombres de miembros creando una clase que implementa IEquivalencyStep
:
https://stackoverflow.com/a/55898570
Desafortunadamente, la versión 6 cambió esta interfaz y el truco no funciona. ¿Existe alguna solución alternativa para este tipo de comparación en la versión actual de Fluent Assertions?
davy.ai
A partir de la versión 6 de Fluent Assertions, el enfoque
IEquivalencyStep
para comparar colecciones con tipos y nombres de miembros diferentes ya no es válido. Sin embargo, hay soluciones alternativas disponibles.Una solución alternativa es utilizar el método
Using
para especificar una estrategia personalizada de selección de propiedades, lo que le permite controlar qué propiedades se comparan. Por ejemplo, si tiene dos coleccionescollection1
ycollection2
con tipos y nombres de miembros diferentes, podría compararlos de esta manera:Este código indica a Fluent Assertions que utilice el método existente
BeEquivalentTo
para comparar propiedadesIEnumerable<object>
, y que solo compare propiedades con el nombre “Value”.Otra solución alternativa es usar una regla de aserción personalizada
IAssertionRule
, que permite implementar lógica de comparación personalizada para tipos específicos. Por ejemplo, podría crear una regla que compare objetosMyType
con base en una propiedad específica:Luego, puede registrar la regla con Fluent Assertions de esta manera:
Este código indica a Fluent Assertions que utilice la regla
MyTypeComparer
para comparar objetosMyType
.Ambas soluciones alternativas le permiten personalizar la lógica de comparación para escenarios específicos donde la comparación predeterminada no funciona.