我一直試圖解決這個問題幾天,現在無濟於事。我試圖測試AnObject.AnAction的功能(搶先道歉,我不得不混淆類/方法名稱)。我的目標是讓MyTestObj.do_work(AnObject)在調用它時實際做任何事情。它有我想在單元測試環境中調用的代碼。Moq錯誤:無法將'AnObject'強制轉換爲'System.Delegate'
這裏是我的單元測試代碼:
Mock<MyTestObj> myTestObj_mock = new Mock<MyTestObj>();
myTestObj_mock.Setup(e => e.do_work(It.IsAny<AnObject>()));
...
AnObject tester = new AnObject();
tester.anAction(myTestObj_mock.Object);
方法AnObject.AnAction(MyTestObj MTO)內:
...
mto.do_work(this);
...
正是在這一點上跑的時候,我得到這個錯誤:
System.InvalidCastException : Unable to cast object of type
'myNamespace.AnObject' to type 'System.Delegate'.
MyTestObj.do_work是一個虛擬方法。
我完全不知道爲什麼會出現這個錯誤。當NUnit運行它時,我已經完成了代碼,我確定這是它崩潰的地方。它不會再進入代碼。
我真的很難過。有人知道發生了什麼嗎?
在此先感謝!
***更新* **
我試圖內AnObject.AnAction創建AnObject的實例,並通過它,而不是 '本':
...
AnObject test = new AnObject();
mto.do_work(test);
...
這沒有任何效果。
什麼do_work(param?)中的參數? – 2012-03-13 20:32:17
AnObject的一個實例。 – CodeSlinger512 2012-03-13 20:34:12
出於好奇,你是否嘗試過傳入其他東西(新建一個AnObject)並運行測試? – 2012-03-13 20:41:42