Mam poniższy kod, gdzie moja Mock interfejs ma właściwość Recorder, który jest klasą.Ustawianie nieruchomość makiety poprzez przyczyn Setup „wyrażenie nie jest metoda A inwokacja”
I spróbuj ustawić właściwość w tej klasie, ale pojawia się błąd Expression is not a method invocation
. Czy mógłbyś pomóc?
Błąd znajduje się przy starcie, gdy idzie do spróbować ustawić właściwość enum. To rzuca ArgumentException z poniższego śladu stosu:
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)
Dzięki
//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);
AKTUALIZACJA - I odkryli, że RunState nie jest własnością, ale pole/członek, który jest ENUM
Czy możesz nam powiedzieć * gdzie * pojawia się błąd? Czy jest to błąd podczas kompilacji lub błąd czasu wykonania, a jeśli jest to błąd czasu wykonania, kiedy to wystąpi? –
@ JonSucket done! – Jon
A więc, które połączenie nie działa - pierwsze czy drugie? (Jeśli jest pierwszy, usuńmy drugi obraz ze zdjęcia ...) –