4

我正在尝试遵循这个示例并利用 shim 删除对 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>与该 shim 关联作为返回值。

4

1 回答 1

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(); }
于 2013-07-10T06:46:32.137 回答