Tengo el siguiente código donde mi interfaz Mock tiene una propiedad Recorder que es una clase.Configuración de la propiedad de simulación a través de la instalación causa 'La expresión no es una invocación al método'
Intento establecer una propiedad en esa clase pero obtengo un error de Expression is not a method invocation
. ¿Podrías ayudar?
El error está en el tiempo de ejecución cuando se trata de probar un conjunto de la propiedad enum. Se lanza una excepción ArgumentException con el seguimiento de la pila a continuación:
at Moq.ExpressionExtensions.ToMethodCall(LambdaExpression expression)
at Moq.Mock.<>c__DisplayClass1c`2.<Setup>b__1b()
at Moq.PexProtector.Invoke[T](Func`1 function)
at Moq.Mock.Setup[T,TResult](Mock mock, Expression`1 expression, Func`1 condition)
at Moq.Mock`1.Setup[TResult](Expression`1 expression)
Gracias
//Works
var mock = new Moq.Mock<IEngine>();
//Works
mock.Setup(x => x.Recorder).Returns(new Moq.Mock<Recorder>().Object);
//Fails on the next line assigning a property value!!!
mock.Setup(x => x.Recorder.RunState).Returns(Recorder.eRunStates.Play);
ACTUALIZACIÓN - he encontrado que RunState no es una propiedad sino un campo/miembro que es una enumeración
¿Podría decirnos * dónde * obtiene el error? ¿Es un error de tiempo de compilación o de tiempo de ejecución, y si es un error de tiempo de ejecución, cuándo ocurre? –
@JonSkeet hecho! – Jon
Entonces, ¿qué llamada está fallando, la primera o la segunda? (Si es el primero, eliminemos por completo el segundo de la imagen ...) –