测试WCF服务而不启动它们

时间:2011-09-20 11:17:23

标签: c# wcf unit-testing

我想测试我的WCF类(集成测试),但我不想将它们作为WCF服务启动。

一切正常但在某些情况下我需要从OperationContext中读取IncomingMessageHeaders。我想知道这是否可以做到?

我所学到的是我可以创建OperationContext并使用它。但是我需要通过ChannelFactory创建它,它需要Binding(然后是Endpoint)。我需要(可能)以某种方式对我的实现类进行本地绑定。这可能吗?

2 个答案:

答案 0 :(得分:2)

处理此问题的最佳方法是使用DI/IoC将OperationContext抽象到接口,然后使用mocking frameworkMoqRhino来实现该接口。在测试时,您的模拟框架将提供该新类的实例来代替OperationContext。这完全消除了您在测试期间对外部事物的依赖。

答案 1 :(得分:2)

另一种方法是使每个WCF方法成为一个单行,调用业务逻辑层,您将能够进行单元测试,而不必担心WCF实现细节。