Microsoft使用WCF服务进行Shims

时间:2013-07-09 23:29:31

标签: c# .net wcf microsoft-fakes

我正在尝试关注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>的模拟对象与该垫片关联作为返回值。

1 个答案:

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