Dependency injection 当存在条件注册时,如何在Simple Injector中交换依赖项以进行集成测试
我们正在设置集成测试,并希望能够将一些实际实现替换为存根。这似乎是可能的,但我们也有条件注册 设置Dependency injection 当存在条件注册时,如何在Simple Injector中交换依赖项以进行集成测试,dependency-injection,asp.net-core-3.1,simple-injector,.net-core-3.1,.net-framework-4.8,Dependency Injection,Asp.net Core 3.1,Simple Injector,.net Core 3.1,.net Framework 4.8,我们正在设置集成测试,并希望能够将一些实际实现替换为存根。这似乎是可能的,但我们也有条件注册 设置container.Options.AllowOverridingRegistrations=true不能与条件注册结合使用 附近有工作吗 澄清:我们想要覆盖的注册最好不是有条件的,但是有任何有条件的注册都不允许设置container.Options。允许覆盖注册为true您看到的是简单注入器中的一个限制是的,这会起作用,但这里还有一个更大的问题:AllowOverridingRegistratio
container.Options.AllowOverridingRegistrations=true代码>不能与条件注册结合使用
附近有工作吗
澄清:我们想要覆盖的注册最好不是有条件的,但是有任何有条件的注册都不允许设置container.Options。允许覆盖注册为true
您看到的是简单注入器中的一个限制是的,这会起作用,但这里还有一个更大的问题:AllowOverridingRegistrations
甚至不能设置为true
,如果存在任何条件注册。即使我没有覆盖其中任何一个,但仍然会弹出异常,因为某些注册是有条件的。这不是AllowOverridingRegistrations
的设置方式。也许您遇到了一个bug(在旧版本中),但我刚刚用5.0.3进行了验证,并且可以使用AllowOverridingRegistrations
覆盖(无条件)注册,即使存在条件注册(用于不相关的抽象)。此项目使用SimpleInjector 4.10.2
。我们还没有完全准备好切换到5.0。明天我将进一步调查。我刚刚用版本4.10.2、4.9.2、4.8.1和4.7.1测试了这一点,它们似乎都能工作。可能是您遇到了一个紧急情况,或者有了一个不同的用例,然后我正在进行测试。如果您有一个复制,您可以将其发布到GitHub。我非常有兴趣看到它。从Simple Injector 5.0.4开始,该行为已经修改:在特定情况下,现在允许注册条件。看见