Autofac тест все зарегистрированные типы могут быть решены

StackOverflow https://stackoverflow.com/questions/1203750

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть куча типов, зарегистрированных в 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();
        }
    }
Это было полезно?

Решение

Autofac ничего не предлагает на этот счет - поскольку Autofac создает компоненты в ответ на ResolveInstance, вы столкнетесь с побочными эффектами конструктора и т. д.

Интеграционное тестирование - лучший способ решить эту проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top