Настройка Castle Windsor для нескольких проектов и модульное тестирование

#castle-windsor #castle

#castle-windsor #castle

Вопрос:

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

Я хотел бы написать модульный тест следующим образом:

  [Test]
    public void Create_HappyPath_Success()
    {
        // Arrange
        UnitOfMeasure unitOfMeasure = new UnitOfMeasure();
        unitOfMeasure.Code = "Some new unit of measure";
        unitOfMeasure.DataOwner = 1;

        // Act
        this.UoMService.Create(unitOfMeasure);  // Fails here as UoMService is null

        // Assert something

    }
 

Теперь я получаю исключение с нулевой ссылкой в этой строке:

  this.UoMService.Create(unitOfMeasure);  // Fails here as UoMService is null
 

Я считаю, что это связано с тем, что Castle Windsor не вызывается, и, следовательно, экземпляр UoMService не создается. Мой установщик приложений Castle Windsor определен в другом проекте, то есть в моем ASP.NET Проект MVC. Итак, мой первый вопрос заключается в том, можно ли повторно использовать этот установщик для запуска моих модульных тестов.

Теперь, чтобы обойти эту проблему, я создал новый установщик в своем проекте модульного тестирования, связавшись с установщиком в моем веб-проекте. Затем я использовал следующий код в своей настройке:

   [SetUp]
    public void ControllersInstallerTests()
    {
        this.containerWithControllers = new WindsorContainer();
        IoC.Initialize(this.containerWithControllers);

        this.containerWithControllers.Install(FromAssembly.This());
    }
 

На этот раз, когда я запускаю тесты, я получаю следующую ошибку:

Настройка: замок.Виндзор.Конфигурация.Интерпретаторы.XmlProcessor.Исключение ConfigurationProcessingException: ошибка обработки файла ресурса узла: [] [] —-> Замок.Ядро.Ресурс.Исключение ResourceException: файл C:ProjectsDavidPMServicesMyProject .Услуги.Не удалось найти ServiceImpl.Test.Unit bin Debug Config Windsor.config

Вопрос в том, почему он ищет в папке bin Debug?

Как новичок в Castle Windsor, я не уверен, что мне следует делать, чтобы подключиться к Castle Windsor для моих модульных тестов.

Ответ №1:

Вы не должны подключать свой контейнер IoC в своих модульных тестах. Во время производства ваш контейнер IoC будет разрешать зависимости. Во время модульных тестов вы создаете зависимости как часть своих тестов — обычно с использованием макетной среды, чтобы вы могли тестировать изолированно.

Ответ №2:

скопируйте файл конфигурации в выходной каталог