我想單元測試我的項目的MQ系列實現,並且需要模擬到MQ系列服務器的連接以測試我的實現是否隔離,並避免發送消息/從實際隊列中檢索消息。如何使用MOQ for .NET模擬MQ系列對象MQQueueManager?
下面是代碼:
using IBM.WMQ;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace Test
{
[TestClass]
public class MQTest
{
[TestMethod]
public void SendMessage_MoqUnitTest()
{
//create a mock MQ manager
var mqManMock = new Mock<MQQueueManager>();
//test by calling the send method
MyMQhandler.MQSender mqsender = new MyMQhandler.MQSender();
//error happens when trying to access the moq object here
mqsender.Send("test message", mqManMock.Object);
}
}
}
我知道我沒有做的MOQ任何設置還沒有,但在此之前的任何代碼實際上是反對它運行出現的問題。
問題是,當我這樣做時,我得到一個異常。從與消息的內部異常 堆棧跟蹤 「發生I/O錯誤」:
在IBM.WMQ.MQChannelTable.CreateChannelEntryLists(MQChannelListEntry名稱列表) 在IBM.WMQ.Nmqi.ManagedNmqiMQ.CreateNameListEntryFromCCDT(字符串qMgrName,字符串ccdtFile) 在IBM.WMQ.Nmqi.ManagedNmqiMQ.CreateNameListEntryFromCCDT(字符串qMgrName) 在IBM.WMQ.Nmqi.ManagedNmqiMQ.GetNameList(字符串qMgrName) 在IBM.WMQ.Nmqi.ManagedNmqiMQ.DoConn(字符串qMgrName,MQConnectOptions CNO, ManagedHconn manHconn,Int32 & hConn,Int32 & compCode,Int32 & reason) at IBM.WMQ.Nmqi.ManagedNmqiMQ.MQCONNX(St環pQMgrName,MQConnectOptions pConnectOpts,Phconn phconn,的Int32 & pCompCode,的Int32 & pReason) 在IBM.WMQ.MQQueueManager.Connect(字符串queueManagerName) 在IBM.WMQ.MQQueueManager..ctor() 在Castle.Proxies.MQQueueManagerProxy。 .ctor(IInterceptor [])
大多數時候我運行它雖然我只是得到「函數評估超時」MQManMock.Object。
這是否意味着我不能模擬MQ?