如果我有这些接口:
ISequencer = interface;
IController = interface;
他们的实现(控制器需要通过构造器注入的 Sequencer):
TSequencer = class(TInterfacedObject, ISequencer)
end;
TController = class(TInterfacedObject, IController)
constructor Create(Sequencer: ISequencer);
end;
我在全局容器中注册实现:
GlobalContainer.RegisterType<TSequencer>.Implements<ISequencer>;
GlobalContainer.RegisterType<TController>.Implements<IController>;
GlobalContainer.Build;
最后,通过自动连接功能,我可以获得一个新的IController
接口实例:
Controller := ServiceLocator.GetService<IController>;
这对于真正的应用程序代码来说是可以的。但在测试项目中我想模拟ISequencer
. 根据测试,当我向容器请求实现时ISequencer
,有时我需要真正的实现(TSequencer
),而其他时候我需要一个模拟实现(如TSequencerMock
)。我该怎么做这个开关?