如何为调用其他Web服务的WCF服务编写单元测试?

时间:2011-12-26 12:17:56

标签: visual-studio-2010 web-services unit-testing nunit

我有一个客户端应用程序,它调用我的WCF服务(确切地说是安全令牌服务,即STS),用于验证用户。我们将许多应用程序集成在一起,这个特定的WCF服务(STS)又调用某些第三方应用程序的其他Web服务,因为我的STS需要第三方Web服务的一些细节才能继续。

现在我想为我的STS以及我的客户端应用程序登录功能编写单元测试。

我的问题是:

  1. 我是否只为STS方法编写单元测试,其中一些硬编码值作为第三方Web服务的输入?如果不是,如果第三方Web服务出现问题,单元测试将失败。

  2. 我可以硬编码输入(例如用户名和密码)值,而不是从客户端应用程序的单元测试中调用我的STS吗?这是正确的做法吗?

  3. 是否有必要从为客户端应用程序编写的单元测试中实际调用Web服务?如果是,为什么?

1 个答案:

答案 0 :(得分:2)

单元测试不会跨越流程边界,集成测试会这样做。您的目的是仅测试STS的行为。为此,您需要注入第三方服务的模拟实现。我建议你看一下最小起订量。您可能还需要一个DI容器(我使用ms unity,但有很多可供选择),您的STS将从中解析对第三方服务的引用。

  • 构建第三方服务模拟并在DI容器中注册
  • 在进程中实例化STS,无需启动WCF运行时
  • 测试STS并验证模拟期望