2009-07-30 65 views
15

我有一堆注册Autofac的类型,一些依赖关系比较深。是否有内置的方式来测试我可以解决所有注册类型?我想在应用程序启动时快速失败,而不是几分钟后部分进入。Autofac测试所有注册类型都可以解决

这就是我目前正在做的事情,它似乎工作,但我仍然怀疑是否没有更好的方法。

public void VerifyAllRegistrations() 
    { 
     foreach (IComponentRegistration registration in _container.ComponentRegistrations) 
     { 
      bool isNewInstance; 
      registration.ResolveInstance(_container, new Parameter[0], new Disposer(), out isNewInstance); 
     }    
    } 

    private class Disposer : IDisposer 
    { 
     public void Dispose() 
     { 
      // no-op 
     } 

     public void AddInstanceForDisposal(IDisposable instance) 
     { 
      instance.Dispose(); 
     } 
    } 

回答

5

Autofac不提供任何表明此 - 因为Autofac响应ResolveInstance创建的组件,你将要面临的构造副作用等

集成测试是最好的方法解决这个问题。

+0

你可以试试https://github.com/TestStack/TestStack.ConventionTests/releases/tag/2.1.0 – 2017-03-13 22:48:08