为什么要使用OWIN TestServer?

时间:2017-09-07 05:12:55

标签: 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对测试控制器进行单元化:

http://www.juliencorioland.net/archives/using-owin-to-test-your-web-api-controllers#.WbDSHdjTWaM

我看到的区别在于使用TestServer.CreateWebApp.Start<Startup>

关键区别是什么?为什么选择其中一个呢?

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

1 个答案:

答案 0 :(得分:1)

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

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

  1. 为SignalR客户端托管网址 - 没有网址就无法工作, 它可以在哪里运行
  2. 基于合同的测试 - 验证提供商的合同 侧。这也只能通过启动WebApp来完成。 (我们&#39;再 使用Pact.Net)