![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
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.
|