如何在WF工作流中模拟Web服务调用?

时间:2010-08-05 06:48:43

标签: wcf web-services unit-testing mocking workflow-foundation

我正在实施基于WF的WCF Web服务。此Web服务使用我不负责的其他Web服务。所以基本上我的服务工作流程包含几个发送活动。

我正在遵循TDD方法,因此服务实现将由单元测试覆盖。我想测试第三方服务的正确调用。

在非工作流程的情况下,我会通过NMock模拟外部服务。但在我的情况下,我无法控制工作流实例的实例化,我不知道如何欺骗Send活动使用模拟对象而不是真正的服务端点。

尽管MSDN上的Unit Testing Workflows And Activities文章提到了模拟,但我找不到任何模拟发送活动远程端的完整示例。

关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:0)

为您的Web服务使用ServiceAgents包装器是一种可行的方法。

这是我在之前的项目中遵循的模式。

由于它们是基于界面的,因此您可以轻松地模拟服务。

此模式还有其他优点(除了单元测试),包括能够在一定程度上从外部依赖项中抽象出应用程序。但是,它确实增加了在服务之上创建另一个类层的开销。

答案 1 :(得分:0)

请尝试使用Moles框架。 http://research.microsoft.com/en-us/projects/pex/

有关于如何模拟sharepoint服务的示例。我相信同样的技巧应该适用于WF工作流程。

我曾尝试模拟sqlconnection,Entity框架,Web服务调用,它的工作非常整洁。基本上,它可以模拟几乎任何.net对象。