为什么要使用OWIN TestServer?

Mat*_*t W 6 testing asp.net-web-api owin-middleware

本文介绍如何在内存中托管整个Web API堆栈以使用OWIN进行测试:

http://www.davidwhitney.co.uk/Blog/2015/01/07/testing-an-asp-net-webapi-app-in-memory/

而本文显示了如何使用OWIN TestServer对测试控制器进行单元化:

https://blog.jcorioland.io/archives/2014/04/01/using-owin-to-test-your-web-api-controllers.html

我看到的区别是使用TestServer.Create和之间WebApp.Start<Startup>

主要的区别是什么?为什么选择一个?

这仅仅是Web API调用的单元测试控制器方法与内存中的端到端集成测试之间的区别吗?

Ali*_*Pet 5

当您这样做时 TestServer.Create<Startup>()- 您只需使用启动文件启动内存中的实例。TestServer 内部的 HttpClient 足以进行内存中的集成测试。我们在一个进程中启动所有测试服务器,所以这不是一个限制(目前有 4 个测试服务器一起运行)。

当你这样做时 WebApp.Start<Startup>(Settings.WebApiUrl)- 你在你提供的 url 上启动一个网络应用程序。还有另一个接受选项的重载:网址和设置。我们仅在特定情况下使用此选项。如:

  1. SignalR 客户端的托管 url - 如果没有可以运行的 URL,它将无法工作
  2. 基于合同的测试 - 验证供应商方面的合同。这也只能通过启动的 WebApp 来完成。(我们正在使用 Pact.Net)