Ответ 1
Итак, основная проблема заключается в том, что у вас есть жесткая зависимость от объекта 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 и проверки функциональности.