4

MessageQueue.GetPublicQueues を呼び出すクラスを表すために、RhinoMocks でモック オブジェクトを使用しています。メッセージ キューイングがワークグループ モードで動作しているときにスローされる例外 (MessageQueueException) をシミュレートして、例外を正しくキャッチしていることを確認したい

MessageQueueException には public コンストラクターはなく、例外用の標準の保護コンストラクターのみがあります。モック オブジェクト/Expect.Call ステートメントからこの例外をスローする適切な方法はありますか?

4

2 に答える 2

5

リフレクションは、アクセシビリティ規則を破る可能性があります。保証が無効になります。.NET の更新によってコードが簡単に破損する可能性があります。これを試して:

using System.Reflection;
using System.Messaging;
...
        Type t = typeof(MessageQueueException);
        ConstructorInfo ci = t.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, 
          null, new Type[] { typeof(int) }, null);
        MessageQueueException ex = (MessageQueueException)ci.Invoke(new object[] { 911 });
        throw ex;
于 2008-10-25T00:46:47.340 に答える
3

これは、無効なキューを作成しようとすることで発生する可能性があります。おそらく、フレームワークの変更によって(プライベート/保護されたコンストラクターを使用して)拘束されるよりも安全です。

MessageQueue mq = MessageQueue.Create("\\invalid");
于 2008-11-16T23:36:47.060 に答える