El parámetro Lambda no funciona en Moq

Sigo recibiendo la excepción "Expresión no admitida". Parece que la expresión lambda (a=>a.PP_EventID==1) es el problema. ¿Cómo resolvió este?

pricepackPersistenceMock.Setup(pricepack => pricepack.Delete(a=>a.PP_EventID==1)).Verifiable();

preguntado el 26 de abril de 12 a las 08:04

1 Respuestas

Deberías usar el predicado dentro It.Is<T>() método.

pricepackPersistenceMock.Setup(pricepack => ricepack.Delete(It.Is<TypeOfa>(a=>a.PP_EventID==1)))
                        .Verifiable();

Actualizar:

eventPersistenceMock.Setup(u => u.Single(It.IsAny<Func<tbl_SBAem_Event, bool>>()))
                    .Returns(eventlists.Where(a => a.EventMngID == currentevent.EventMngID).Single());
// you can directly return the value
//verifiable is not needed because you set the return value

Respondido 26 Abr '12, 09:04

Ufuk sabes como burlarte de este T Single(Func predicado);? - user335160

Probablemente sea un método de extensión LINQ. Puedes echar un vistazo a esto pregunta - Ufuk Hacıoğulları

no, creo ese método en el repositorio junto con el método de eliminación. - user335160

aquí está el código eventPersistenceMock.Setup(u => u.Single(It.IsAny >())).Returns((Func expresión) => listas de eventos.Dónde(a=>a.EventMngID==eventoactual.EventMngID).Single()).Verifiable(); - user335160

Creo que hay un error con el código porque siempre obtendré el primer índice. - user335160

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.