Einstellung mock-Eigenschaft über das Setup Ursachen 'Ausdruck ist nicht eine Methode invocation'

Habe ich den code unten, wo meine Mock-Schnittstelle verfügt über eine Recorder-Eigenschaft, die ist Klasse.

Ich dann versuchen, eine Eigenschaft auf, die Klasse aber ich bekomme Expression is not a method invocation Fehler. Können Sie helfen?

Wird der Fehler zur Laufzeit, wenn es geht, zu versuchen, eine Gruppe die enum-Eigenschaft. Es löst eine ArgumentException mit der unten stack trace:

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)

Dank

//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);  

UPDATE - ich habe festgestellt, dass RunState ist nicht eine Eigenschaft, sondern eine Feld/Element ist ein enum

  • Können Sie uns sagen, wo du den Fehler? Ist es eine compile-Zeit-Fehler oder ein execution time error, und wenn es eine Hinrichtung ein Fehler, Wann ist es geschehen?
  • fertig!
  • So der Aufruf fehlschlägt - die erste oder die zweite? (Wenn es das erste ist, entfernen Sie jetzt das zweite Bild ganz...)
  • Geändert Frage
InformationsquelleAutor Jon | 2012-02-07
Schreibe einen Kommentar