2012-06-01 24 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