1

我正在尝试设置采用 SocketAsyncEventArgs 的方法的单元测试,即来自 Sockets 类的 IOCP 函数之一。

为了将这些类之一推入我的函数,我需要更改 SAEA 的 .BytesTransferred 属性。如何做到这一点?我尝试使用 PrivateObject.SetFieldOrProperty,但它告诉我它无法找到该属性:

pargs.SetFieldOrProperty("BytesTransferred", expected); 

我收到以下异常:“找不到方法‘System.Net.Sockets.SocketAsyncEventArgs.BytesTransferred’。”

4

1 回答 1

3

此属性没有设置器。两种解决方案:

  1. 不要使用 SocketAsyncEventArgs 进行测试。相反,在某种模拟对象上进行测试。
  2. 设置私有字段 m_BytesTransferred。使用反射器查看实现细节。

解决方案#2会让我紧张。我会选择#1。

于 2012-06-01T14:12:18.253 回答