Microsoft Fakes shim para método genérico con clase anónima.
Estoy tratando de usar un shim ShimEnumerable.CountOf1IEnumerableOfM0
, pero en mi método, el método de extensión se usa con un tipo anónimo como este:
elements
.GroupBy(
element => new
{
A = element.A,
B = element.B,
}
)
.Select(grouping => grouping.Count())
¿Cómo puedo hacer el shim del método Count
?
davy.ai
Para interceptar el método
Count
, deberás crear una intercepción para el métodoGroupBy
, ya que este devuelve un objetoIEnumerable
. Una vez que hayas creado la intercepción paraGroupBy
, podrás interceptar el métodoCount
accediendo a la propiedadIEnumerable.Count
. Para hacer esto, deberás utilizar la intercepciónShimEnumerable.CountOf1IEnumerableOfM0
. A continuación, se muestra un ejemplo de cómo puedes interceptar el métodoGroupBy
y la propiedadCount
:En el código anterior, estamos interceptando
GroupBy
para devolver una lista de pares clave-valor donde la clave es la clave de agrupación y el valor es el recuento de elementos en el grupo. Luego, estamos interceptando la propiedadCount
para recorrer los elementos del enumerable y contarlos manualmente. Esto nos permite utilizarelements.Count()
en nuestro método que se está probando, a la vez que nos permite controlar lo que devuelve en nuestra prueba unitaria.</m0,>