2016-10-13 2 views
1

Я хочу перенести код ниже на ядро. Но в любом случае, чтобы проверить код работает (например: на пустельга) или работает на тест (например: на NUnit)Проверьте, запущено ли приложение или запущено тестирование

 if (HostingEnvironment.IsHosted) 
     { 
      //hosted 
      return HostingEnvironment.MapPath(path); 
     } 

     //not hosted. For example, run in unit tests 
     var baseDirectory = AppDomain.CurrentDomain.BaseDirectory; 
     path = path.Replace("~/", "").TrimStart('/').Replace('/', '\\'); 
     return Path.Combine(baseDirectory, path); 

Я пытался сделать это _hostingEnvirontment является IHostingEnvironment

 if (I MUST CHECK IS HOSTED OR NOT) 
     { 
      //hosted 
      return _hostingEnvironment.ContentRootPath + path; 
     } 

     //not hosted. For example, run in unit tests 
     var baseDirectory = AppContext.BaseDirectory; 
     path = path.Replace("~/", "").TrimStart('/').Replace('/', '\\'); 
     return Path.Combine(baseDirectory, path); 

ответ

1

Вместо иметь код, который вы тестируете, «знать», работает ли он в прямом эфире или под тестовой структурой, лучше вводить те вещи, которые необходимо изменить в тестовой среде. Это делает ваше приложение в целом более проверяемым и позволяет избежать многих рисков, связанных с тем, что сут знает о тестовой структуре.

Рассмотрите возможность создания среды TestHostingEnvironment, которая реализует IHostingEnvironment и предоставляет ее SUT при выполнении тестов.

+0

Это основанная структура, я пытаюсь ее с минимальными изменениями. В любом случае, ваша идея имеет первостепенное значение и лучший способ сделать это. Но не отвечу на мой вопрос. – sonstiq