MVC Controller, тестирование службы WCF, заключенной в прокси - PullRequest
0 голосов
/ 13 апреля 2011

Я пытаюсь понять, как создать тесты для моих контроллеров, которые используют службу WCF (через прокси-класс)

Класс прокси в значительной степени идентичен классу, указанному в этом сообщении http://blog.weminuche.net/2008/08/test-post.html

Базовый контроллер

public abstract class ServiceProxyController<TService> : Controller
    where TService : class 
{

    private readonly ServiceProxy<TService> _proxyHelper;

    protected ServiceProxyController(string endpoint)
    {
        _proxyHelper = new ServiceProxy<TService>(endpoint);
    }

    private Stuff GetStuff(int num)
    {
         Call((service) =>  {
                    service.DoSomeStuff(num)
                 });
                ................
            }
     ...........
 }

Реализация контроллера

public class MyController : ServiceProxyController<IService>
{
    public MyController() : base("ServiceBindingName")
    {
    }

     }

Я хочу иметь возможность добавить в мой контроллер прокси-помощника (???), чтобы я мог его посмеяться и для этого протестировать контроллер

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Как насчет внедрения вспомогательного прокси в конструктор (обратите внимание на введение абстракции):

private readonly IServiceProxy<TService> _proxyHelper;
protected ServiceProxyController(IServiceProxy<TService> proxyHelper)
{
    _proxyHelper = proxyHelper;
}

и контроллер:

public MyController(IServiceProxy<TService> proxyHelper) 
    : base(proxyHelper)
{
}

Таким образом, в вашем модульном тесте при создании экземпляра контроллера вы можете ввести поддельный экземпляр интерфейса IServiceProxy<TService>.

Затем вам нужно будет сконфигурировать свою инфраструктуру DI для вставки правильной реализации в конструктор контроллера, который обернет фактический ChannelFactory.

0 голосов
/ 13 апреля 2011

Я только что задал похожий вопрос.Я внедряю сервис, используя структуру карты.Я динамически создаю прокси с использованием фабрики каналов.

Посмотрите на этот пример использования фабрики каналов.

создайте WCF ChannelFactory

Myвопрос для вашей справки.

Rhinomocks - насмешливые делегаты

Примечание. На самом деле именно Дарин отправил ServiceInvoker

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...