Unit testing 如何解析NSubstitute中的“命名类型”?

Unit testing 如何解析NSubstitute中的“命名类型”?,unit-testing,unity-container,mstest,nsubstitute,Unit Testing,Unity Container,Mstest,Nsubstitute,我正在使用IUnityContainer注册类型,以便稍后解析。 我已注册了以下类型: //注册命名类型映射 container.RegisterTypeFirstResponseHelper; container.RegisterTypeSecondResponseHelper; 因此,我可以在我的一个构造函数中使用如下所示: 公共饰面 i工作单元工作单元, ILog记录器, .......... [DependencyFirstResponseHelper]IProcessHelper Fi

我正在使用IUnityContainer注册类型,以便稍后解析。 我已注册了以下类型:

//注册命名类型映射 container.RegisterTypeFirstResponseHelper; container.RegisterTypeSecondResponseHelper; 因此,我可以在我的一个构造函数中使用如下所示:

公共饰面 i工作单元工作单元, ILog记录器, .......... [DependencyFirstResponseHelper]IProcessHelper FirstResponseHelper, [DependencySecondResponseHelper]IProcessHelper secondResponseHelper { ......... _FirstResponseHelp=firstResponseHelper; _secondResponseHelper=secondResponseHelper; } …并希望使用替代品解决此问题,如下所示。但是通过传递name=>FirstResponseHelper,不允许在Substitute!:

//试图在UnitTest中解析,如下所示 IProcessHelper firstResponseHelper=替换为.ForFirstResponseHelper IProcessHelper secondResponseHelper=Substitute.ForSecondResponseHelper 我需要从UnitTest MSTest调用FirstResponseHelper和SecondResponseHelper中的方法。
因此,我需要使用Substitute.For为命名类型接口解析它。

我假设您希望将一个替换注册为命名注册,以便解析Finish。如果是这种情况,您可以使用InjectionFactory返回替代品:

container.RegisterTypeFirstResponseHelper, new InjectionConstructorc=>Substitute.For; container.RegisterTypeSecondResponseHelper, new InjectionConstructorc=>Substitute.For; 顺便说一句,我不会使用[DependencyAttribute],而是删除这些属性并定义传入正确依赖项的InjectionConstructor:

container.RegisterType 新注入构造函数 新解析参数, 新解析参数, 新的解析参数FirstResponseHelper, 新的解析参数SecondResponseHelper; 或者做类似事情的注射工厂:

container.RegisterType new InjectionFactoryc=> { 返回新的Finishc.Resolve, c、 决心,, c、 ResolveFirstResponseHelper, c、 ResolveSecondResponseHelper };
Hy@ LakSmithAlayaAN,也许考虑重新命名问题来解决统一容器中的“命名类型”。我不认为这是特定于NSubstitute的,而是针对注入任何命名实例。