存在条件注册时如何交换简单注入器中的依赖项以进行集成测试

How to swap dependencies in Simple Injector for Integration Testing when conditional registrations exist

我们正在设置集成测试,并希望能够将一些实际实现换成存根。看How to Dependency Swap using Simple Injector in ASP.NET Core 3.1 for Integration Tests好像可以,但是我们也有条件注册。

设置 container.Options.AllowOverridingRegistrations = true; 不能与条件注册结合使用。

有解决办法吗?

澄清一下:我们想要覆盖的注册最好不是有条件的,但是有任何有条件的注册不允许设置 container.Options.AllowOverridingRegistrationstrue

您看到的是 Simple Injector <= 5.0.3 的限制。它不允许在 AllowOverridingRegistrations 设置为 true 时注册条件,即使该特定服务类型没有现有注册。

此限制已(现在)在 5.0.4 中解除。在此版本中,仍然无法为已注册的服务类型替换或添加条件注册,但现在可以为全新的服务类型添加条件注册。