Я пытаюсь выполнить модульное тестирование реализации моего проекта в серии MQ, и мне нужно смоделировать соединение с сервером серии MQ, чтобы протестировать мою реализацию изолированно и избежать отправки / получения сообщений из реальной очереди.
Вот код:
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, но проблема возникает еще до того, как какой-либо код будет запущен против него.
Проблема в том, что когда я делаю это, я получаю исключение.
Трассировка стека из внутреннего исключения с сообщением «Произошла ошибка ввода-вывода»:
в IBM.WMQ.MQChannelTable.CreateChannelEntryLists (MQChannelListEntry nameList)
в IBM.WMQ.Nmqi.ManagedNmqiMQ.CreateNameListEntryFromCCDT (String qMgrName, String ccdtFile)
в IBM.WMQ.Nmqi.ManagedNmqiMQ.CreateNameListEntryFromCCDT (String qMgrName)
в IBM.WMQ.Nmqi.ManagedNmqiMQ.GetNameList (String qMgrName)
в IBM.WMQ.Nmqi.ManagedNmqiMQ.DoConn (строка qMgrName, MQConnectOptions cno, ManagedHconn manHconn, Int32 и hConn, Int32 и compCode, Int32 и причина)
в IBM.WMQ.Nmqi.ManagedNmqiMQ.MQCONNX (строка pQMgrName, MQConnectOptions pConnectOpts, Phconn phconn, Int32 & pCompCode, Int32 & pReason)
в IBM.WMQ.MQQueueManager.Connect (String queueManagerName)
в IBM.WMQ.MQQueueManager..ctor ()
at Castle.Proxies.MQQueueManagerProxy..ctor (IInterceptor [])
Большую часть времени я запускаю его, хотя просто получаю «Тайм-аут оценки функции» или объект MQManMock.Object.
Значит ли это, что я не могу издеваться над MQ ??