2012-06-01 59 views
1

我想設置一個方法的單元測試,該方法需要SocketAsyncEventArgs,即來自Sockets類的IOCP函數之一。單元測試SocketAsyncEventArgs

爲了將其中一個類推入我的函數中,我需要更改SAEA的.BytesTransferred屬性。如何做到這一點?我試圖用PrivateObject.SetFieldOrProperty,但它告訴我,這是無法找到的屬性:

pargs.SetFieldOrProperty("BytesTransferred", expected); 

我得到以下異常: 「方法「System.Net.Sockets.SocketAsyncEventArgs.BytesTransferred找不到。 「

回答

3

該屬性沒有一個setter。兩種解決方案:

  1. 請勿使用SocketAsyncEventArgs進行測試。相反,測試某種模擬對象。
  2. 設置專用字段m_BytesTransferred。使用反射器查看實現細節。

解決方案#2會讓我緊張。我會去#1。

+0

有沒有簡單的方法來創建一個模擬對象? – Carlos

+0

您可以在網上找到*噸*關於隔離單元測試的信息。 – usr

+0

那麼,設置m_name似乎已經爲我工作。我稍後會看看這些嘲笑。 – Carlos