Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






TestConfig






Что нам нужно сделать. Нам нужно:

· Взять Web.Config c проекта LessonProject (каким-то хитрым образом)

· И на его базе создать некий класс, который будет реализовывать IConfig интерфейс

· Ну и поцепить на Ninject Kernel

· И можно использовать.

Начнем. Для того чтобы взять Web.Config – нам нужно скопировать его в свою папку. Назовем её Sandbox. Теперь скопируем, поставим на pre-build Event в Project Properties:

xcopy $(SolutionDir)LessonProject\Web.config $(ProjectDir)Sandbox\ /y

При каждом запуске билда мы копируем Web.config (и, если надо, то перезаписываем) к себе в Sandbox.

Создадим TestConfig.cs и в конструктор будем передавать наш файл (/Tools/TestConfig.cs):

public class TestConfig: IConfig

{

private Configuration configuration;

 

public TestConfig(string configPath)

{

var configFileMap = new ExeConfigurationFileMap();

configFileMap.ExeConfigFilename = configPath;

configuration = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);

}

 

 

public string ConnectionStrings(string connectionString)

{

return configuration.ConnectionStrings.ConnectionStrings[connectionString].ConnectionString;

}

 

public string Lang

{

get

{

return configuration.AppSettings.Settings[" Lang" ].Value;

}

}

 

public bool EnableMail

{

get

{

return bool.Parse(configuration.AppSettings.Settings[" EnableMail" ].Value);

}

}

 

public IQueryable< IconSize> IconSizes

{

get

{

IconSizesConfigSection configInfo = (IconSizesConfigSection)configuration.GetSection(" iconConfig");

if (configInfo! = null)

{

return configInfo.IconSizes.OfType< IconSize> ().AsQueryable< IconSize> ();

}

return null;

}

}

 

public IQueryable< MimeType> MimeTypes

{

get

{

MimeTypesConfigSection configInfo = (MimeTypesConfigSection)configuration.GetSection(" mimeConfig");

return configInfo.MimeTypes.OfType< MimeType> ().AsQueryable< MimeType> ();

}

}

 

public IQueryable< MailTemplate> MailTemplates

{

get {

MailTemplateConfigSection configInfo = (MailTemplateConfigSection)configuration.GetSection(" mailTemplatesConfig");

return configInfo.MailTemplates.OfType< MailTemplate> ().AsQueryable< MailTemplate> ();

}

}

 

public MailSetting MailSetting

{

get

{

return (MailSetting)configuration.GetSection(" mailConfig");

}

}

 

public SmsSetting SmsSetting

{

get

{

return (SmsSetting)configuration.GetSection(" smsConfig");

}

}

}

И инициализируем в UnitTestSetupFixture.cs (/Setup/UnitTestSetupFixture.cs):

protected virtual void InitConfig(StandardKernel kernel)

{

var fullPath = new FileInfo(Sandbox + " /Web.config").FullName;

kernel.Bind< IConfig> ().ToMethod(c => new TestConfig(fullPath));

}


 

Создадим простой тест на проверку данных в конфиге:

[TestFixture]

public class MailTemplateTest

{

[Test]

public void MailTemplates_ExistRegisterTemplate_Exist()

{

var config = DependencyResolver.Current.GetService< IConfig> ();

var template = config.MailTemplates.FirstOrDefault(p => p.Name.StartsWith(" Register"));

Assert.IsNotNull(template);

}

}

Запускаем, проверяем, вуаля! Переходим к реализации IAuthentication.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.