我正在尝试为 Web API 项目做一些单元测试。我将模拟 Web API 托管环境。看来我可以使用内存主机(HttpServer)或自主机(HttpSelfHostServer)。
只是想知道有什么区别,哪种技术适用于什么,这些选项是否有任何限制。
我正在尝试为 Web API 项目做一些单元测试。我将模拟 Web API 托管环境。看来我可以使用内存主机(HttpServer)或自主机(HttpSelfHostServer)。
只是想知道有什么区别,哪种技术适用于什么,这些选项是否有任何限制。
您应该使用 in memory 主机进行端到端测试,然后单独测试您的环境的网络连接性。
出于多种原因:
内存主机,顾名思义,完全在内存中运行,所以会快得多
自托管需要以提升的权限运行,因此您的测试需要在“管理员”身份的上下文中执行。这远非理想。如果您想从 ie 构建脚本或从 PowerShell 执行测试,则尤其麻烦,因为结果,这些进程也必须以提升的权限启动。此外,这必须发生在您测试的任何服务器上。
在自托管中,您最终会测试给定操作系统的网络堆栈,这确实是不应该测试的——因为它可能在不同的环境(开发、登台、QA、生产等)中有所不同。例如 - 给定的端口可能不可用。结果,您可能会被拖入跨不同机器的不必要的调试工作中,甚至无法运行测试。
最后,使用自托管进行测试,仍然不能保证服务在 Web 托管时能够正确运行,反之亦然 - 所以您不妨只在内存中进行测试