Есть ли способ установить параметры конфигурации для класса, который вы тестируете? - PullRequest
0 голосов
/ 04 октября 2019

Я написал всю логику для своего тестового проекта, но столкнулся с проблемой попытки установить переменные конфигурации в классе, который я хочу запустить. Класс требует, чтобы для переменной workingDirectory был задан путь к файлу в зависимости от среды, в которой выполняется программа (например, рабочая или тестовая), и сейчас переменная имеет значение null. Как настроить параметры конфигурации так, как если бы класс выполнялся нормально (поскольку параметры конфигурации устанавливаются, когда класс запускается сам по себе или когда он не тестируется)?

Я попытался добавить файл app.config, который используется в тестируемом классе, в тестовый проект, но он все равно не установит переменные конфигурации для меня.

private static readonly string WorkingDir = ConfigurationManager.AppSettings["WorkingDirectory"];

var files = Directory.GetFiles($@"{WorkingDir}\in"); //this results in the 
//filepath being "C:\in" when testing since the WorkingDir configuration 
//variable doesn't get set when the class is called from the test project

<add key="WorkingDirectory" value="\\Test" xdt:Transform="Insert"/>

Переменная конфигурации должна быть "\ Test", когда класс запускается из тестового проекта, но вместо этого имеет значение null или пробел. Это приводит к ошибке, потому что нет каталога, который соответствует строке, указанной в строке кода Directory.GetFiles(), и поэтому он не найдет файлы, которые я хочу найти.

1 Ответ

0 голосов
/ 04 октября 2019

Вам необходимо создать службу для предоставления конфигурации вашему классу:

public interface IConfiguration 
{
    string WorkingDirectory { get; }
}

public class ConfigurationManagerProvider: IConfiguration 
{
    public WorkingDirectory => ConfigurationManager.AppSettings["WorkingDirectory"];
}

Затем внедрите службу IConfiguration в свой класс, и этот класс получит свою конфигурацию от этой службы. Теперь вы можете предоставить альтернативную конфигурацию, либо насмехаясь над этим интерфейсом, либо создав вторую реализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...