Moq - Expresión de Linq en el repositorio - Especificar expresión en la configuración

Tengo un método en mi interfaz que se parece a:

T GetSingle(Expression<Func<T, bool>> criteria);

Estoy tratando de burlarme de la configuración de algo como esto (me doy cuenta de que esto no está funcionando):

_mockUserRepository = new Mock<IRepository<User>>();
_mockUserRepository.Setup(c => c.GetSingle(x => x.EmailAddress == "[email protected]"))
    .Returns(new User{EmailAddress = "[email protected]"});

Me doy cuenta de que estoy pasando el parámetro equivocado a la configuración.
Despues de leeresta respuesta Puedo hacerlo funcionar al pasar la Expresión, como esto:

_mockUserRepository.Setup(c => c.GetSingle(It.IsAny<Expression<Func<User, bool>>>())
    .Returns(new User{EmailAddress = "[email protected]"});

Sin embargo, esto significa que si llamo alGetSingle Método con cualquier expresión, se devuelve el mismo resultado.

¿Hay alguna forma de especificar en la configuración, qué expresión utilizar?

Respuestas a la pregunta(2)

Su respuesta a la pregunta