Разные начальные значения при одном запуске

#c# #.net-core

#c# #.net-ядро

Вопрос:

Вот в чем дело: у меня есть метод:

 public startic class ServiceFactory
{
   public static void IWebHostBuilder Foo()
   {
      return WebHost.CreateDefaultBuilder()
             .UseEnvironment("someEnv")
             .UseStartup<SomeStartup>()
             .ConfigureServices(ConfigureServices);
   }
}
  

Внутри SomeStartup я хотел бы настроить начальные данные БД на основе требований метода / тестового примера.
Я не собираюсь добавлять дополнительные начальные данные в кучу уже существующих начальных данных, а создаю совершенно новую кучу для каждого набора тестов.
Я не нашел ни подходящего метода расширения, который помог бы, ни способа параметризации SomeStartup

Пример тестового примера приведен ниже:

 {
//Arrange
   var context = new bar(_someParameter1, ServiceFactory.Foo(), someParameter2)
//Act
   (...)
//Assert
   (...)
}

  

У вас есть какие-либо предложения?

Комментарии:

1. Я думаю, вам нужно было бы поместить в конструктор для класса SomeStartup.

2. .UseStartup<SomeStartup>() не позволяет мне использовать класс с введенным параметром

3. Добавьте параметр для выбора начального значения. В Startup.ConfigureService , вы можете вводить IConfiguration .

Ответ №1:

Может быть, вы можете использовать переменные среды как обычно? Добавьте IHostingEnvironment для настройки метода в SomeStartup для анализа среды:

 public void Configure(IHostingEnvironment env, ... )
    {
        if (env.IsDevelopment())
        {
// seed1
        }
        else
        {
// seed2
        }
// or like this    
        if (!env.IsEnvironment("EF_MIGRATIONS"))
        {
// seed3                       
        }
    // or some other variable
    var p = Environment.GetEnvironmentVariable("PATH");
    // 
    seed4
    // ... 
}