我有下面的代碼在我的模擬接口有一個記錄器屬性,它是一類。設置通過設置模擬引起財產「的表達是不是一個方法調用」
我再試着設置這個類的一個屬性,但我得到了Expression is not a method invocation
錯誤。你能幫忙嗎?
的錯誤是在運行的時候它去嘗試一個集枚舉屬性。它將引發與下面的堆棧跟蹤一個ArgumentException:
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)
感謝
//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);
更新 -我發現RunState是不是這是一個枚舉
您能否告訴我們*您在哪裏得到錯誤?它是編譯時錯誤還是執行時錯誤,如果它是執行時錯誤,它何時發生? – 2012-02-07 15:25:57
@JonSkeet完成! – Jon 2012-02-07 15:33:46
那麼哪個呼叫失敗 - 第一個還是第二個? (如果是第一個,讓我們從圖片中刪除第二個......) – 2012-02-07 15:35:26