Тестовый проект asp.net mvc не может найти файл windsor - PullRequest
0 голосов
/ 08 июля 2010

Привет! Я использую windsor в качестве DI-контейнера,

мой код ниже

public static class ContainerBuilder
    {
        public static IWindsorContainer Build()
        {
            var container = new WindsorContainer("Configuration\\Windsor.config");



            // automatically register controllers
            container.Register(AllTypes
                                   .Of<Controller>()
                                   .FromAssembly(Assembly.GetExecutingAssembly())
                                   .Configure(c => c.LifeStyle.Transient.Named(c.Implementation.Name.ToLower())));

            container.Register(


               Component.For<IServiceLocator>().Instance(new WindsorServiceLocator(container)),
              Component.For(typeof(IRepository<>)).ImplementedBy(typeof(NHibernateRepository<>)).LifeStyle.Transient

               );


            return container;
        }
    }

Мне нужно вызвать это из тестового проекта, проблема в том, что когда я делаю этоwindsor.config так и не найден, и тест, кажется, всегда терпит неудачу, где лучший способ разместить этот файл конфигурации или есть лучший подход для этого?Спасибо

1 Ответ

0 голосов
/ 08 июля 2010

Просто настройте путь конфигурации, например,

public static IWindsorContainer Build(string configPath) {
  var container = new WindsorContainer(configPath);
  ...
}

В вашем приложении configPath - "Configuration \ Windsor.config", в то время как в ваших тестах у вас будет путь типа ".... \ Configuration \ Windsor.config".

Обратите внимание, что обычно вы не должны зависеть от контейнера в своих тестах, если только вы не выполняете некоторые интеграционные тесты.

Кроме того, сборщик статических контейнеров не выглядит хорошей идеей, взгляните на Установщики Windsor , чтобы зарегистрировать ваши компоненты модульным способом.

...