我有一个客户端应用程序,它调用我的WCF服务(确切地说是安全令牌服务,即STS),用于验证用户。我们将许多应用程序集成在一起,这个特定的WCF服务(STS)又调用某些第三方应用程序的其他Web服务,因为我的STS需要第三方Web服务的一些细节才能继续。
现在我想为我的STS以及我的客户端应用程序登录功能编写单元测试。
我的问题是:
我是否只为STS方法编写单元测试,其中一些硬编码值作为第三方Web服务的输入?如果不是,如果第三方Web服务出现问题,单元测试将失败。
我可以硬编码输入(例如用户名和密码)值,而不是从客户端应用程序的单元测试中调用我的STS吗?这是正确的做法吗?
是否有必要从为客户端应用程序编写的单元测试中实际调用Web服务?如果是,为什么?
答案 0 :(得分:2)
单元测试不会跨越流程边界,集成测试会这样做。您的目的是仅测试STS的行为。为此,您需要注入第三方服务的模拟实现。我建议你看一下最小起订量。您可能还需要一个DI容器(我使用ms unity,但有很多可供选择),您的STS将从中解析对第三方服务的引用。