Saltar al contenido

Uso de ConfigurationBuilder de ASP.NET Core en un proyecto de prueba

Te sugerimos que pruebes esta resolución en un ambiente controlado antes de pasarlo a producción, saludos.

Solución:

Puedes usar el ConfigurationBuilder en un proyecto de prueba con un par de pasos. No creo que necesites el IHostingEnvironment interfaz en sí.

Primero, agregue dos paquetes NuGet a su proyecto que tengan la ConfigurationBuilder métodos de extensión:

"dependencies": 
  "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc1-final",
  "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final"

En segundo lugar, coloque las variables de entorno que desee en las propiedades del proyecto de prueba:

diálogo de variable de entorno

Luego, puede crear su propio constructor en el proyecto de prueba:

private readonly IConfigurationRoot _configuration;

public BuildConfig()

    var environmentName = Environment.GetEnvironmentVariable("Hosting:Environment");

    var config = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json")
        .AddJsonFile($"appsettings.environmentName.json", true)
        .AddEnvironmentVariables();

    _configuration = config.Build();

Si desea utilizar precisamente el mismo archivo de configuración (no una copia), deberá agregarle una ruta.

Agregaré esta respuesta aquí para completar, ya que experimenté el mismo problema que @vaindil describe en la respuesta de Will aquí. La razón fue que completamos nuestra IConfiguration a partir de variables de entorno en el código bajo prueba. Esto anuló cualquier configuración que establezcamos en la prueba usando, por ejemplo, un appsettings.json. Nuestra solución fue crear variables de entorno para el proceso de prueba utilizando System.Environment.SetEnvironvironmentVariable("variableName", "variableValue")

Efectivamente, la instancia de WebHostBuilder en nuestras pruebas se crea igual que nuestra API alojada:

// Code omitted for brevity
var builder = new WebHostBuilder()                 
                .UseEnvironment("Development")
                .ConfigureAppConfiguration(configurationBuilder => configurationBuilder.AddEnvironmentVariables())
                .UseStartup();

var testServer = new TestServer(builder); // test against this

Te mostramos comentarios y puntuaciones

Si entiendes que ha resultado de utilidad este artículo, sería de mucha ayuda si lo compartes con más programadores así contrubuyes a dar difusión a esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *