使用 xunit DependencyInjection 对 Minimal API 进行测试

💡 原文中文,约4000字,阅读约需10分钟。
📝

内容提要

ASP.NET Core 从 .NET 6 开始支持了 Minimal API,对于 Minimal API 的集成测试,可以使用 xunit DependencyInjection。通过监听 HostBuilding 和 HostBuilt 事件,在 HostBuilding 时获取 IHostBuilder 并加入一些 host 注册配置逻辑,再通过 HostBuilt 事件拿到最后构建好的 IHost。示例代码展示了如何使用 Minimal API 创建一个自定义的 HostBuilder,并进行测试。整体实现很巧妙,有兴趣的可以研究源码。

🎯

关键要点

  • ASP.NET Core 从 .NET 6 开始支持 Minimal API。

  • 使用 xunit DependencyInjection 实现对 Minimal API 的集成测试。

  • 通过监听 HostBuilding 和 HostBuilt 事件来获取 IHostBuilder 和最终构建好的 IHost。

  • 实现细节涉及使用反射来执行 internal 的 DeferredHostBuilder 和 HostFactoryResolver。

  • 示例代码展示了如何创建一个自定义的 HostBuilder 并进行测试。

  • 测试代码中使用 MinimalApiHostBuilderFactory.GetHostBuilder<Program>() 创建 HostBuilder。

  • 测试用例包括验证 API 返回和服务功能的正确性。

  • 整体实现巧妙,鼓励读者研究源码。

🏷️

标签

➡️

继续阅读