Testing Minimal API with xunit DependencyInjection
💡
原文英文,约300词,阅读约需1分钟。
📝
内容提要
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 返回和服务功能的正确性。
- 整体实现巧妙,鼓励读者研究源码。
➡️