Итак, основная проблема здесь в том, что вы сильно зависите от объекта MessageQueue. Обычно, когда у меня такая ситуация, я создаю интерфейс, такой как IQueue, а затем создаю реализацию IQueue для MessageQueue.
Затем вы можете ввести зависимость IQueue с помощью Moq и проверить, что ваш класс функционирует должным образом.
Примерно так:
public interface IQueue
{
bool Exists(string path);
MessageQueue Create(string path);
}
Реализация будет выглядеть примерно так:
public MessageQueueImplementation : IQueue
{
public bool Exists(string path)
{
return MessageQueue.Exists(path);
}
public MessageQueue Create(string path)
{
return MessageQueue.Create(path);
}
}
Тогда для вашего класса это зависит от MessageQueue примерно так:
public class DependentOnQueue
{
private IQueue queue;
//inject dependency
public DependentOnQueue(IQueue queue)
{
this.queue = queue;
}
public MessageQueue CreateQueue(string path)
{
//implement method that you want to test here
}
}
Теперь вы можете добавить объект IQueue, используя moq, в этот класс, который зависит от объекта MessageQueue, и протестировать его функциональность.