我正在寫一個類,它將被初始化爲Socket。我想使用NUnit DynamicMock編寫測試。如何使用NUnit DynamicMock來模擬非接口和非MarshalByRef
我該如何創建一個模擬的Socket沒有太多的努力?
DynamicMock DynamicSocketMock = new DynamicMock(typeof (Socket));
/*No ERROR - BUT I THINK HERE IS THE PROBLEM*/
Socket SocketMock = (Socket) DynamicSocketMock.MockInstance;
/*RUNTIME ERROR*/
ToBeTested Actual = new ToBeTested(SocketMock);
/*NEVER REACHED*/
編輯#1
我看着MOQ NAD它看起來相當不錯,但是我仍然無法測試。我最初的問題是要找到使用的rig版本,但我想我解決了這個問題。
var Mock = new Mock<Socket>();
Socket MockSocket = (Socket)Mock.Object;
ToBeTested Actual = new ToBeTested(SocketMock);
問題是,Socket不具有不帶參數的構造函數。現在我不想給它一個參數,我想嘲笑一切。
編輯#2 這似乎是一個問題lot of people目標是直接從套接字創建一個模擬。
那麼這取決於你下一步要做什麼。通過真正的模擬解決方案(如Moq),您可以配置您的模擬以在某些呼叫中返回特定值。但如果你只需要傳遞對象給構造函數而不做任何有趣的事情,那麼你總是可以像這樣做一些手工繼承的模擬類。 –