【问题标题】:Unit testing SocketAsyncEventArgs单元测试 SocketAsyncEventArgs
【发布时间】:2012-06-01 13:44:13
【问题描述】:

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

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

pargs.SetFieldOrProperty("BytesTransferred", expected); 

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

【问题讨论】:

    标签: c# .net visual-studio-2010 unit-testing


    【解决方案1】:

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

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

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

    【讨论】:

    • 有没有简单的方法来创建模拟对象?
    • 您可以在网络上找到关于隔离单元测试的信息。
    • 好吧,设置 m_name 似乎对我有用。稍后我会看看模拟。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2011-04-12
    • 2023-03-21
    • 2011-05-04
    相关资源
    最近更新 更多