对于某些需求,我编写了IServiceBehavior
,IEndpointBehavior
,IDispatchMessageInspector
的实现,并且我的所有WCF服务都使用它们。
我需要对它们进行单元测试吗?如果是,我如何对这些自定义WCF扩展点进行单元测试?我正在使用MSTest。
答案 0 :(得分:-1)
您应该有两组测试:
单元测试实现应该像单元测试一样进行。这真的缩小到验证这些自定义实现的功能。简单,旧的单元测试。
但是,请注意,成功单元测试这样的WCF位实现有两个主要障碍:
当然,使用适当的技术和工具可以克服所有这些:
要处理OperationContext.Current
(和类似的),你可能需要改变你的设计。确切地说,在某些方面使用当前上下文的所有类都需要实现公开它的protected virtual
方法(或任何其他可能有用的部分,比如请求标题):
protected virtual MessageHeaders GetContextHeaders()
{
return OperationContext.Current.RequestContext.RequestMessage.Headers;
}
然后你需要创建派生的,可测试的类,它将返回那些标题(或上下文或你打算使用的任何东西)的模拟/存根版本,并在单元中创建该类的实例测试
完成单元测试后,integration应该是一个简短的步骤。只需将对象设置为在实际场景中使用的对象......并验证它们是否按预期工作。
旁注:单元测试也可以通过更简单的方式完成,但是您需要付费工具(例如Typemock Isolator,让您模拟静态/密封类)和/或有点重/复(PEX/Moles)。