es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Migración a la API mínima: la configuración de prueba en Json no está anulando el Programa.

Gracias a esta respuesta: https://stackoverflow.com/questions/70093628/integration-test-and-hosting-asp-net-core-6-0-without-startup-class/70095604#70095604, he podido realizar pruebas de integración con la API.

WebApplicationFactory<Program>? app = new WebApplicationFactory<Program>()
    .WithWebHostBuilder(builder =>
    {
        builder.ConfigureServices(services =>
        {

        });
    });

HttpClient? client = app.CreateClient();

Esto ha funcionado utilizando el appsettings.json del proyecto de la API. Ahora estoy intentando utilizar integrationtestsettings.json en su lugar utilizando:

IConfiguration configuration = new ConfigurationBuilder()
    .SetBasePath(ProjectDirectoryLocator.GetProjectDirectory())
    .AddJsonFile("integrationtestsettings.json")
    .Build();

WebApplicationFactory<Program>? app = new WebApplicationFactory<Program>()
    .WithWebHostBuilder(builder =>
    {
        builder.ConfigureAppConfiguration(cfg => cfg.AddConfiguration(configuration));

        builder.ConfigureServices(services =>
        {

        });
    });

_httpClient = app.CreateClient();

He inspeccionado la variable de configuración y puedo ver las propiedades cargadas desde mi archivo integrartiontestsettings.json. Sin embargo, el host sigue ejecutándose utilizando el appsettings.json del proyecto del servidor.

Anteriormente, en .Net5, estaba utilizando WebHostBuilder y los ajustes eran reemplazados por los ajustes de prueba.

    WebHostBuilder webHostBuilder = new();
    webHostBuilder.UseStartup<Startup>();
    webHostBuilder.ConfigureAppConfiguration(cfg => cfg.AddConfiguration(_configuration));

Pero no puedo hacer que los ajustes de prueba se apliquen utilizando WebApplicationFactory.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para utilizar la configuración de la prueba de integración en ASP.NET Core

    Para utilizar la configuración de la prueba de integración en ASP.NET Core, puedes seguir los siguientes pasos:

    1. Crea un archivo integrationtestsettings.json en el proyecto de prueba e incluye la configuración necesaria que se requiere para que las pruebas de integración se ejecuten.
    2. Carga la configuración desde el archivo integrationtestsettings.json creando una instancia de ConfigurationBuilder y agregando el archivo a la misma como se muestra a continuación:

      IConfiguration configuration = new ConfigurationBuilder()
          .SetBasePath(ProjectDirectoryLocator.GetProjectDirectory())
          .AddJsonFile("integrationtestsettings.json")
          .Build();
      

    3. Utiliza el método WithWebHostBuilder de la clase WebApplicationFactory para configurar el host con la configuración cargada como se muestra a continuación:
      WebApplicationFactory<program>? app = new WebApplicationFactory<program>()
          .WithWebHostBuilder(builder =>
          {
              builder.ConfigureAppConfiguration(cfg => cfg.AddConfiguration(configuration));
              builder.ConfigureServices(services =>
              {
                  // agregar los servicios necesarios para las pruebas de integración
              });
          });
      
    4. Crea una instancia de HttpClient utilizando el método CreateClient de la clase WebApplicationFactory como se muestra a continuación:
      HttpClient? client = app.CreateClient();
      

    Ahora, puedes utilizar la instancia de HttpClient para hacer solicitudes a la API y el host utilizará la configuración del archivo integrationtestsettings.json.

Comments are closed.