1

SocketAsyncEventArgs (つまり、Sockets クラスの IOCP 関数の 1 つ) を受け取るメソッドの単体テストを設定しようとしています。

これらのクラスの 1 つを関数に組み込むには、SAEA の .BytesTransferred プロパティを変更する必要があります。どうやってこれを行うのですか?PrivateObject.SetFieldOrProperty を使用しようとしましたが、プロパティが見つからないことがわかりました。

pargs.SetFieldOrProperty("BytesTransferred", expected); 

次の例外が発生します:「メソッド 'System.Net.Sockets.SocketAsyncEventArgs.BytesTransferred' が見つかりません。」

4

1 に答える 1

3

このプロパティにはセッターがありません。2 つのソリューション:

  1. テストには SocketAsyncEventArgs を使用しないでください。代わりに、ある種のモック オブジェクトでテストします。
  2. プライベート フィールド m_BytesTransferred を設定します。リフレクターを使用して実装の詳細を確認します。

解決策#2は私を緊張させます。私は#1で行きます。

于 2012-06-01T14:12:18.253 に答える