我正在尝试关注this example并利用填充程序删除对WCF服务调用的外部依赖性,该调用是从我执行单元测试的方法调用的。与示例不同,我使用类似于以下代码生成我的WCF客户端:
ChannelFactory<IReportBroker> factory = new ChannelFactory<IReportBroker>("ReportBrokerBasicHttpStreamed", new EndpointAddress(this.CurrentSecurityZoneConfigurationManager.ConfigurationSettings[Constants.ConfigurationKeys.ReportBrokerServiceUrl]));
IReportBroker proxy = factory.CreateChannel();
proxy.Execute(requestMessage))
如何调整该示例来填充CreateChannel方法返回的代理?我假设在ShimWCFService类中,我需要添加类似....
的东西ShimChannelFactory<TService>.AllInstances.CreateChannel = (var1) => { return [instance of a mock object]};
但是,我不确定如何将<TService>
的模拟对象与该垫片关联作为返回值。
答案 0 :(得分:3)
您需要为每个类型参数填充工厂。假设您有三个服务合同'IService0''IService1'和'IService2'。
然后你需要像这样设置垫片:
ShimChannelFactory<IService0>.AllInstances.CreateChannel = (_) => { return new Service0Mock(); }
ShimChannelFactory<IService1>.AllInstances.CreateChannel = (_) => { return new Service1Mock(); }
ShimChannelFactory<IService2>.AllInstances.CreateChannel = (_) => { return new Service2Mock(); }