使用HttpServer或HttpSelfHostServer对Web API进行unit testing
我正在尝试为Web API项目进行一些unit testing。 我要模拟Web API托管环境。 好像我可以使用内存主机(HttpServer)或自主机(HttpSelfHostServer)。
只是想知道有什么区别,哪种技术对什么有好处,并且对这些选项有任何限制。
您应该在内存主机中使用端到端测试,然后单独测试环境的网络连接。
出于多种原因:
-
在内存主机中,顾名思义,完全在内存中运行,因此会更快
-
自托管需要以提升的权限运行,因此您的测试需要在“管理员”身份的上下文中执行。 这远非期望。 如果您想要从构建脚本或PowerShell执行测试,这尤其麻烦,因为这些进程也必须以提升的权限启动。 此外,这必须在您测试的任何服务器上进行。
-
在自托管中,您最终会测试给定操作系统的网络堆栈,这实际上是不应该测试的 – 因为它可能在不同的环境(开发,登台,QA,生产等)之间有所不同。 例如 – 给定端口可能不可用。 因此,您可能会被拖入不同机器的不必要的调试工作,甚至可以运行测试。
-
最后,使用自托管进行测试仍然无法保证服务在Web托管时能够正常运行,反之亦然 – 所以你不妨在内存中进行测试
- 无法将当前JSON数组(例如)反序列化为类型’TenantManagementWebApi.Entities.Tenant
- 异步设置Thread.CurrentPrincipal?
- ASP.NET Core Web API:程序不包含适用于入口点的静态“Main”方法
- 在序列化中将长数字转换为字符串
- 通用Web API控制器
- 无法在ASP.NET WebApi控制器中读取Request.Content
- 来自另一个类库的基本控制器在web api中不起作用
- 通用存储库,CreateObjectSet ()方法
- 使用MemoryStream和ZipArchive将zip文件返回到asp.net web api中的客户端