我正在实施基于WF的WCF Web服务。此Web服务使用我不负责的其他Web服务。所以基本上我的服务工作流程包含几个发送活动。
我正在遵循TDD方法,因此服务实现将由单元测试覆盖。我想测试第三方服务的正确调用。
在非工作流程的情况下,我会通过NMock模拟外部服务。但在我的情况下,我无法控制工作流实例的实例化,我不知道如何欺骗Send活动使用模拟对象而不是真正的服务端点。
尽管MSDN上的Unit Testing Workflows And Activities文章提到了模拟,但我找不到任何模拟发送活动远程端的完整示例。
关于如何做到这一点的任何想法?
答案 0 :(得分:0)
为您的Web服务使用ServiceAgents包装器是一种可行的方法。
这是我在之前的项目中遵循的模式。
由于它们是基于界面的,因此您可以轻松地模拟服务。
此模式还有其他优点(除了单元测试),包括能够在一定程度上从外部依赖项中抽象出应用程序。但是,它确实增加了在服务之上创建另一个类层的开销。
答案 1 :(得分:0)
请尝试使用Moles框架。 http://research.microsoft.com/en-us/projects/pex/
有关于如何模拟sharepoint服务的示例。我相信同样的技巧应该适用于WF工作流程。
我曾尝试模拟sqlconnection,Entity框架,Web服务调用,它的工作非常整洁。基本上,它可以模拟几乎任何.net对象。