Модульное тестирование Custom ConfigurationElement & ConfigurationElementCollection
Я создал кастомConfigurationElement
а такжеConfigurationSection
чтобы упростить настройку множества параметров приложения при запуске. Тем не менее, я бы очень хотел провести модульное тестирование этой логики.
ServiceConnection
public class ServiceConnection : ConfigurationElement
{
[ConfigurationProperty("locationNumber", IsRequired = true)]
public string LocationNumber
{
get { return (string) base["locationNumber"]; }
set { base["locationNumber"] = value; }
}
[ConfigurationProperty("hostName", IsRequired = true)]
public string HostName
{
get { return (string) base["hostName"]; }
set { base["hostName"] = value; }
}
[ConfigurationProperty("port", IsRequired = true)]
public int Port
{
get { return (int) base["port"]; }
set { base["port"] = value; }
}
[ConfigurationProperty("environment", IsRequired = true)]
public string Environment
{
get { return (string) base["environment"]; }
set { base["environment"] = value.ToUpper(); }
}
internal string Key
{
get { return string.Format("{0}|{1}", LocationNumber, Environment); }
}
}
Коллекция ServiceConnection
[ConfigurationCollection(typeof(ServiceConnection), AddItemName = "service", CollectionType = ConfigurationElementCollectionType.BasicMap)]
public class ServiceConnectionCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new ServiceConnection();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((ServiceConnection) element).Key;
}
public ServiceConnection Get(string locationNumber, string environment = "PRODUCTION")
{
return (ServiceConnection) BaseGet(string.Format("{0}|{1}", locationNumber, environment));
}
public ServiceConnection this[int index]
{
get { return (ServiceConnection)BaseGet(index); }
set
{
if (BaseGet(index) != null)
{
BaseRemoveAt(index);
}
BaseAdd(index, value);
}
}
}
Некоторый Тест XML
<MyServiceConnections>
<service locationNumber="0AB0" hostName="DEVSERVER" port="1234" environment="DEVELOPMENT" />
<service locationNumber="0AB0" hostName="BETASERVER" port="1234" environment="BETA" />
<service locationNumber="0AB0" hostName="PRODSERVER" port="1234" environment="PRODUCTION" />
</MyServiceConnections>
В моем производственном коде я используюConfigurationManager
чтобы получитьServiceConnection
но я не уверен, как создать тест, который обходит менеджера в целом.
Я ищу, чтобы получить объект ServiceConnection и убедиться, что все поля соответствуют вводу, который я настроил в тестовом XML. Я также хотел бы проверить функциональность, когда пользователю не удалось заполнить одно или несколько полей.