Estoy empezando a crear pruebas desde mi api y para eso estoy usando xunit, pero no está leyendo mi appsettings.Development.json, ¿qué pasa?
namespace CorporateMembership.Test.Integration { public class ContestTest { private readonly HttpClient _httpClient; public ContestTest() { var server = new TestServer(new WebHostBuilder() .UseEnvironment("Development") .UseStartup<Startup>()); _httpClient = server.CreateClient(); }...De forma predeterminada, cuando crea TestServer , no crea la configuración y necesita crear la configuración y pasarla al servidor de prueba.
public class ContestTest { private readonly HttpClient _httpClient; public ContestTest() { var environment = "Development"; var directory = Directory.GetCurrentDirectory(); var configurationBuilder = new ConfigurationBuilder() .SetBasePath(directory) .AddJsonFile("appsettings.json") .AddJsonFile($"appsettings.{environment}.json"); var server = new TestServer(new WebHostBuilder() .UseEnvironment(environment) .UseConfiguration(configurationBuilder.Build()) .UseStartup<Startup>()); _httpClient = server.CreateClient(); } }Es probable que su proyecto de prueba esté integrado en un directorio diferente al de su proyecto principal, por lo que su archivo appsettings.Development.json no está allí.
Cargue su configuración con IConfigurationBuilder en su Startup . Puede especificar una ruta relativa allí a través del método AddJsonFile .
Además, ¿realmente necesita iniciar un servidor en su prueba unitaria? Prueba la funcionalidad de la clase, que rara vez necesita un servidor en ejecución. Para inyectar configuraciones de prueba en una prueba de clase, puede usar el patrón de opciones y luego en su prueba proporcionar configuraciones ficticias a través Options.Create(new MyDummySettings()) .