集成测试从 .NET 5 迁移到 6 在 Mediatr 命令中失败
Posted
技术标签:
【中文标题】集成测试从 .NET 5 迁移到 6 在 Mediatr 命令中失败【英文标题】:Integration tests Migration from .NET 5 to 6 failed at Mediatr Commands 【发布时间】:2021-12-22 08:19:24 【问题描述】:我正在将应用程序从 .NET 5 迁移到 .NET 6,包括集成测试
在集成测试中运行以下命令时出现错误
// Arrange
await _mediatr.Send(new MyCommand());
为 MediatR.IRequestHandler`2[MyCommand] 类型的请求构造处理程序时出错。向容器注册您的处理程序。有关示例,请参阅 GitHub 中的示例。
我从 api 中删除了启动类,只使用了 program.cs
我的情况出了什么问题?
也添加内部异常
无法从根提供程序解析“MediatR.IRequestHandler`2[Mycommand]”,因为它需要范围服务“Domain.MyDbContext”。
【问题讨论】:
你如何注册你的处理程序?实际上,在迁移过程中也不需要从通用托管模型更改为新的最小模型。 @GuruStroncode
services.AddMediatR(Assembly.GetExecutingAssembly()); code
这就是我在 API program.cs 文件中注册处理程序的方式“实际上,在迁移过程中也不需要从通用托管模型更改为新的最小模型。 " -> 是的,我知道,但需要这样做:)
【参考方案1】:
如果您查看内部异常,似乎问题在于Domain.MyDbContext
的注册。您的命令处理程序。要求将其注册为范围服务。
【讨论】:
但同样适用于 .Net 5。因此 .NET 6 中的任何更改以上是关于集成测试从 .NET 5 迁移到 6 在 Mediatr 命令中失败的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用 EF Core 5 InMemory 数据库进行集成测试吗
从 Azure 函数 NET 5 迁移到 NET 6 - 现在如何注册中间件
将 dotnet 隔离的进程 Azure Function 从 .net 5 迁移到 .net 6