Ложный MSMQ MessageQueue с практическими рекомендациями

Для меня ни один из них не работал. Решение для меня удаляло следующий файл, в то время как Eclipse был остановлен:

/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/myprojectname/.markers
16
задан Yoann. B 26 October 2009 в 22:16
поделиться

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 и проверьте его функциональность.

30
ответ дан 30 November 2019 в 17:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: