我在RhinoMocks中使用模拟对象来表示调用MessageQueue.GetPublicQueues的类。我想模拟消息队列在工作组模式下运行时引发的异常(这是一个MessageQueueException),以确保我能够正确捕获异常是否可以抛出MessageQueueException?
MessageQueueException没有公共构造函数,只有标准的受保护的构造函数用于异常。有没有从模拟对象/ Expect.Call语句中引发此异常的适当方法?
我在RhinoMocks中使用模拟对象来表示调用MessageQueue.GetPublicQueues的类。我想模拟消息队列在工作组模式下运行时引发的异常(这是一个MessageQueueException),以确保我能够正确捕获异常是否可以抛出MessageQueueException?
MessageQueueException没有公共构造函数,只有标准的受保护的构造函数用于异常。有没有从模拟对象/ Expect.Call语句中引发此异常的适当方法?
反射会破坏可访问性规则。您的将保修无效,.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;
你可以通过尝试创建一个无效的队列。也许更安全的则正在举行的框架的变化俘虏(通过使用私有/保护的构造函数):
MessageQueue mq = MessageQueue.Create("\\invalid");
工程请客:-) – BlackWasp 2008-10-25 09:20:06