MVC控制器,测试包装在代理中的WCF服务

问题描述

| 我试图弄清楚如何为使用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\")
    {
    }

     }
我希望能够向我的控制器中注入代理助手(???),以便能够对其进行模拟并因此测试控制器     

解决方法

如何将代理助手注入到构造函数中(注意引入抽象):
private readonly IServiceProxy<TService> _proxyHelper;
protected ServiceProxyController(IServiceProxy<TService> proxyHelper)
{
    _proxyHelper = proxyHelper;
}
和控制器:
public MyController(IServiceProxy<TService> proxyHelper) 
    : base(proxyHelper)
{
}
在单元测试中,通过这种方式实例化控制器时,可以注入a4ѭ接口的模拟实例。 然后,您将需要配置DI框架,以将正确的实现插入控制器构造函数中,该构造函数将包裹实际的“ 5”。     ,我只是问了一个类似的问题。我正在使用结构图注入服务。我正在使用通道工厂动态创建代理。 看一下使用Channel factory的示例。 创建WCF ChannelFactory 我的问题供您参考。 犀牛-模拟代表 注意-实际上是Darin发布了ServiceInvoker