У меня есть решение с несколькими проектами, и один из этих проектов - мой класс обслуживания, который вызывает диспетчер сохраняемости.
Я хотел бы написать модульный тест следующим образом:
[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
Я полагаю, что это связано с тем, что замок Виндзор не вызывается и, следовательно, UoMService не получает экземпляр. Мой установщик приложения Castle Windsor определен в другом проекте, т.е. в моем проекте ASP.NET MVC. Итак, мой первый вопрос: можно ли повторно использовать этот установщик для запуска моих модульных тестов.
Теперь, чтобы обойти эту проблему, я создал новый установщик в своем проекте модульного тестирования, связавшись с установщиком в моем веб-проекте. Затем я использовал следующий код в моей настройке:
[SetUp]
public void ControllersInstallerTests()
{
this.containerWithControllers = new WindsorContainer();
IoC.Initialize(this.containerWithControllers);
this.containerWithControllers.Install(FromAssembly.This());
}
На этот раз, когда я запускаю тесты, я получаю следующую ошибку:
SetUp: Castle.Windsor.Configuration.Interpreters.XmlProcessor.ConfigurationProcessingException: ошибка обработки ресурса узла FileResource: [] []
----> Castle.Core.Resource.ResourceException: файл C: \ Projects \ DavidPM \ Services \ MyProject.Services.ServiceImpl.Test.Unit \ bin \ Debug \ Config \ Windsor.config не найден
Вопрос в том, почему он смотрит в папку bin \ Debug?
Будучи новичком в Castle Windsor, я не уверен, что мне следует делать, чтобы подключиться к Castle Windsor для моих юнит-тестов.