C# wcfweb服务的定制实例化

C# wcfweb服务的定制实例化,c#,wcf,web-services,rest,testing,C#,Wcf,Web Services,Rest,Testing,我有一个WCF RESTful服务,我想对其进行集成测试,因此需要在测试中本地创建一个服务实例,引用我可以调用的客户机通道。我可以这样做,但是我使用的代码将只调用服务默认的无参数构造函数,如下所示 _serviceHost = new WebServiceHost(typeof(UserService), baseAddress); var binding = new WebHttpBinding(); _serviceHost.AddServiceEndpoint(typeof(Interfa

我有一个WCF RESTful服务,我想对其进行集成测试,因此需要在测试中本地创建一个服务实例,引用我可以调用的客户机通道。我可以这样做,但是我使用的代码将只调用服务默认的无参数构造函数,如下所示

_serviceHost = new WebServiceHost(typeof(UserService), baseAddress);
var binding = new WebHttpBinding();
_serviceHost.AddServiceEndpoint(typeof(Interface.IUserService), binding, address.Uri);            
_serviceHost.Open();
在我的UserService类中,我想为数据存储库向其中注入一个依赖项,如下所示

  public UserService(IUserDataRepository userRepository)
        {
            _userRepository = userRepository;
        }

如何调整第一批代码,以便使用我在测试类中创建(Mock)的IDataRepository对象创建和自托管WCF REST服务

嗯,我认为您可以使用与生产环境相同的方法。我可能错了,但您必须已经拥有自定义ServiceHost和ServiceHostFactory。如果没有,请看这篇文章。您需要通读步骤1-3。您需要从WebServiceHost派生来实现自己的服务。那么您的代码将如下所示:

_serviceHost = new YourCustomServiceHost(typeof(UserService), baseAddress);
希望有帮助