2013-07-09 72 views
4

我正在尝试遵循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方法:不像例子,我用类似这样的代码生成我的WCF客户端对飞?我假设在ShimWCFService类,我需要添加类似....

ShimChannelFactory<TService>.AllInstances.CreateChannel = (var1) => { return [instance of a mock object]}; 

不过,我不确定如何的<TService>模拟对象与垫片作为返回值相关联。

+0

不同于论坛的网站,我们不使用的“谢谢”,或者“任何帮助表示赞赏”,或签名(因此)。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed - 从 - 个)。 –

回答

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(); }