【发布时间】:2018-07-02 13:09:16
【问题描述】:
开发一个 WCF Web API,所有功能都通过了测试,但其中一个单元测试功能出现了问题。这是详细信息。
WCF 服务中的类调用外部 SOAP Web 服务。 SOAP 服务工作正常,所有 APT 测试都与 WCF 成功。但是,针对此类运行单元测试时出现异常“System.ServiceModel.Security.SecurityNegotiationException”,并显示错误消息“无法为 SSL/TLS 建立具有权限‘external-service-url’的安全通道。”。单元测试和 API 测试在同一台机器上,与外部服务的连接是 https,不需要客户端证书。为什么API测试调用外部服务成功但单元测试失败?
任何人都可以说出问题所在并帮助我朝着正确的方向解决问题吗?
【问题讨论】:
-
没有更多信息很难说。通常,单元测试应该隔离它们的依赖关系。这意味着您的单元测试不应调用实际的外部端点。它应该改为调用模型。在一个完美的世界里,你的类甚至不知道外部端点,只知道它的接口,你的应用程序使用依赖注入来提供生产中的真实 api,以及用于单元测试的假 api。
-
@GuillaumeCR,在一个完美的世界中,您将只模拟使测试变慢的依赖项。由于我们处于一个完美的世界中,另一个服务器设置和调用将花费几毫秒,您不需要模拟任何东西;)。
标签: c# api unit-testing