我试图找到答案,但似乎并没有直接讨论很多。我有一个应用程序的组合根,在其中创建一个 DI 容器并在那里注册所有内容,然后解析获得所有依赖项所需的顶级类。由于这一切都发生在内部 - 很难对组合根进行单元测试。你可以做虚拟方法、受保护的字段等等,但我不喜欢引入这些东西只是为了能够进行单元测试。其他类没有大问题,因为它们都使用构造函数注入。所以问题是 - 测试组合根是否有意义?它确实有一些额外的逻辑,但不多,在大多数情况下,应用程序启动期间会弹出任何故障。我有一些代码:
public void Initialize(/*Some configuration parameters here*/)
{
m_Container = new UnityContainer();
/*Regestering dependencies*/
m_Distributor = m_Container.Resolve<ISimpleFeedMessageDistributor>();
}
public void Start()
{
if (m_Distributor == null)
{
throw new ApplicationException("Initialize should be called before start");
}
m_Distributor.Start();
}
public void Close()
{
if (m_Distributor != null)
{
m_Distributor.Close();
}
}