I want to Unit Test my application which use MSMQ but i found no way in order to Mock MessageQueue objects.
var queuePath = @".\Private$\MyQueue";
MessageQueue queue = null;
if (MessageQueue.Exists(queuePath))
{
queue = new MessageQueue(queuePath);
}
else
{
queue = MessageQueue.Create(queuePath);
}
I’m using Moq with xUnit.
So the basic problem here is that you have a hard dependency on the MessageQueue object. Generally when I have a situation like this, I’ll create an interface, like IQueue and then create an implementation of IQueue for MessageQueue.
Then you can inject the IQueue dependency with Moq and test that your class is functioning as expected.
Something like this:
The implementation would be something like this:
Then for your class that depends on the MessageQueue something like this:
Now you can inject an IQueue object using moq into this class that depends on the MessageQueue object and test the functionality.