我有一个WCF RESTful服务,我想进行集成测试,因此需要在测试中本地创建一个服务实例,并引用我可以调用的客户端通道。我可以这样做,但我使用的代码只会调用Services默认的无参数构造函数,如下所示
_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服务?
答案 0 :(得分:0)
嗯,我认为您可以使用与生产环境相同的方法。我可能错了,但您必须已经拥有自定义的ServiceHost和ServiceHostFactory。如果没有,请查看这篇文章Using Instance Provider and ServiceHostFactory to Construct the Service。您想要阅读步骤1-3的步骤。您需要从WebServiceHost派生来实现自己的。然后您的代码将如下所示:
_serviceHost = new YourCustomServiceHost(typeof(UserService), baseAddress);
希望它有所帮助!