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

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

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

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

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

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

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

最佳答案

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

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

  • SignalR客户端的托管网址-如果没有该网址,它将无法正常工作,
    它可以在哪里运行
  • 基于契约(Contract)的测试-验证提供者上的契约(Contract)
    边。这也只能通过启动的WebApp来完成。 (是
    使用Pact.Net)
  • 关于testing - 为什么要使用OWIN TestServer?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46088291/

    10-11 22:23
    查看更多