【问题标题】:Why use OWIN TestServer?为什么使用 OWIN 测试服务器?
【发布时间】:2017-09-07 05:12:54
【问题描述】:

本文展示了如何在内存中托管整个 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.CreateWebApp.Start<Startup> 的使用之间

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

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

【问题讨论】:

  • 我正在尝试设计一个微服务解决方案并想知道同样的问题...您是否同时找到更多信息?
  • 不,我没有,我害怕。

标签: testing asp.net-web-api owin-middleware


【解决方案1】:

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

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

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

【讨论】:

  • 这个解释节省了我的时间。当您说具体情况时,是否包括托管 Web 套接字客户端?我最初使用TestServer.Create<Startup>(),我可以连接网络套接字客户端。切换到WebApp.Start<Startup>(Settings.WebApiUrl) 后,一切都像魅力一样。 stackoverflow.com/questions/63591461/…
猜你喜欢
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多