#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:
скопируйте файл конфигурации в выходной каталог