Asp.net web api 与Web API的集成测试-非内存测试或内存测试-

Asp.net web api 与Web API的集成测试-非内存测试或内存测试-,asp.net-web-api,integration-testing,asp.net-web-api2,Asp.net Web Api,Integration Testing,Asp.net Web Api2,我想在我的Web API控制器上进行集成测试。 当集成测试开始时,应该处理Web API的整个请求/响应管道,这样才是真正的集成测试 我读过一些关于非内存测试或内存测试的博客。我需要知道区别是什么,这些方法中有哪些符合我的上述标准 我真的很高兴听到一些人的解释,他们真正处理了针对自托管或IIS托管的Web API集成测试(如果测试有差异…不确定非内存测试是什么意思,但涉及内存托管Web API的集成测试,请求直接发送到HttpServer,它基本上是在ASP.NET Web API管道中运行的第

我想在我的Web API控制器上进行集成测试。 当集成测试开始时,应该处理Web API的整个请求/响应管道,这样才是真正的集成测试

我读过一些关于非内存测试或内存测试的博客。我需要知道区别是什么,这些方法中有哪些符合我的上述标准


我真的很高兴听到一些人的解释,他们真正处理了针对自托管或IIS托管的Web API集成测试(如果测试有差异…

不确定非内存测试是什么意思,但涉及内存托管Web API的集成测试,请求直接发送到
HttpServer
,它基本上是在ASP.NET Web API管道中运行的第一个组件。这意味着,请求不会到达网络堆栈。因此,您不必担心在特定端口上运行,而且如果您编写了大量测试,运行所有测试所需的时间不会太长,因为您处理的是内存而不是网络。作为典型的单元测试,您应该获得可比较的运行时间。查看Kiran提供的这篇优秀文章,了解有关内存测试的更多详细信息。内存测试将运行您设置为在管道中运行的所有组件,但需要注意的一件事是格式化程序。如果在请求中发送
ObjectContent
,则无需运行媒体格式化程序,因为请求已采用反序列化格式,因此不会进行媒体格式化

如果您想更接近并愿意在运行时间上有所收获,您可以使用自宿主编写测试。这就是你所说的非记忆测试吗?例如,您可以使用OWIN自托管。您可以使用Katana托管API和托管web API,并通过请求点击它。当然,这将使用真正的HttpListener,尽管请求都发生在同一台机器上,但请求确实会遍历网络堆栈。测试将相对较慢,但您可能会更接近prod运行

我个人还没有见过任何人使用web托管和进行大量集成测试。从技术上讲,可以使用
HttpClient
触发您的请求,并检查响应和断言内容,但您无法控制以编程方式安排测试


我的选择是混合搭配,也就是说,尽可能多地使用内存测试,仅在我需要真正进入网络的特定情况下使用基于Katana的主机。

您发布的Kiran链接是否仍然适用于Web API 2.0?