Cześć.
Mam projekt z testami xUnit.
W testach potrzebuję odwołać się do pliku, który różni się zawartością w zależności od wybranej konfiguracji.
W głównym projekcie wykorzystuje do tego zmienną ASPNETCORE_ENVIRONMENT
.
W Properties/launchSettings.json
mam okreslone profile
"profiles": {
"IIS Express DEV": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
}
},
"IIS Express PROD": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
}
},
"IIS Express STAGING": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Staging",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
}
}
}
Na tej podstawie mogę sprawdzić z użyciem jakiego profilu uruchomiony jest program i wybrać odpowiedni plik.
Jednak przy uruchamianiu testów nie udaje mi się odczytać tej właściwości.
Zgodnie z tym co znalazłem w sieci do projektu z testami dodałem klasę Startup
public class Startup
{
public void ConfigureHost(IHostBuilder hostBuilder)
{
var config = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
hostBuilder.ConfigureHostConfiguration(builder => builder.AddConfiguration(config));
}
}
I wstrzyknąłem IConfiguration
do klasy z testami
public class Tests
{
public Tests(IConfiguration config)
{
string enviroment = config.GetValue<string>("ASPNETCORE_ENVIRONMENT");
}
}
Dodałem też plik z konfiguracją profili do projektu.
Niestety zmienna enviroment
zawsze jest null
.
W jaki sposób to ogarnąć?
Z góry dziękuję.
Pozdrawiam