9

我在 ASP.NET MVC WebAPI 项目中使用 Swagger。该项目安装了 Swashbuckle nugget 包并生成 Swagger UI 和 Swagger/docs/v1。我遇到的一个始终如一的问题是开发人员会通过不仔细命名他们的 webAPI 操作来破坏 swagger 文件。我想添加一个单元测试,以防止我通过在部署后转到 Swagger UI 站点并看到在 swagger UI 中显示的 HTTP 500 来发现 swagger/docs/v1 不可用。有人知道如何编写单元测试来验证 Swashbuckle 可以成功生成 swagger 文档吗?

4

3 回答 3

11

找到了一个很好的方法来做我想做的事:

[Fact]
public async Task TestSwagger()
{
   var webHostBuilder = new WebHostBuilder()
                    .UseEnvironment("Test") // You can set the environment you want (development, staging, production)
                    .UseStartup<Startup>(); // Startup class of your web app project

   using (var server = new TestServer(webHostBuilder))
   {
      using (var client = server.CreateClient())
      {
         string result = await client.GetStringAsync("/swagger/v1/swagger.json");
         JObject root = JObject.Parse(result);
      }
   }
}

这使用以下 nuget 包:

  • Microsoft.AspNetCore.TestHost
于 2018-09-26T15:34:03.957 回答
1

查看我们在 Swashbuckle 上的 UnitTest: https ://github.com/domaindrivendev/Swashbuckle/tree/master/Swashbuckle.Tests/Swagger

我敢肯定其中之一真的很接近你正在寻找的东西。

...但是如果只是 webAPI 操作的命名,您可以循环使用 GetApiExplorer 并确保它们遵循您的规则

于 2017-06-13T19:33:25.360 回答
0

对于可能正在寻找Asp.Net Core Swagger测试解决方案的人,我建议仔细看看Cristophe Blin 的方法

于 2022-01-21T10:20:01.403 回答