Para configurar pruebas unitarias en versiones anteriores de .Net Core, podría alojar mi WebApp o WebAPI en un proyecto de prueba de la siguiente manera:
IHost host = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(config => { config.UseStartup<MyWebApp.Startup>(); config.UseUrls("https://localhost:44331/"); ... }) .Build(); El .Net 6.0 actual no utiliza el concepto de clase de Startup y, por lo tanto, no se puede hacer referencia a él. ¿Cómo se pueden alojar aplicaciones de AspNet en un proyecto de prueba de manera adecuada y limpia?
Tenga en cuenta que puede cambiar al modelo de alojamiento genérico (el que usa la clase de inicio) si lo desea.
Para configurar las pruebas de integración con el nuevo modelo de alojamiento mínimo , puede hacer visibles las partes internas del proyecto web para la prueba, por ejemplo, agregando la siguiente propiedad a csproj:
<ItemGroup> <InternalsVisibleTo Include ="YourTestProjectName"/> </ItemGroup> Y luego puede usar la clase Program generada para la aplicación web en WebApplicationFactory :
class MyWebApplication : WebApplicationFactory<Program> { protected override IHost CreateHost(IHostBuilder builder) { // shared extra set up goes here return base.CreateHost(builder); } }Y luego en la prueba:
var application = new MyWebApplication(); var client = application.CreateClient(); var response = await client.GetStringAsync("/api/WeatherForecast"); O use WebApplicationFactory<Program> desde la prueba directamente:
var application = new WebApplicationFactory<Program>() .WithWebHostBuilder(builder => { builder.ConfigureServices(services => { // set up servises }); }); var client = application.CreateClient(); var response = await client.GetStringAsync("/api/WeatherForecast");Ejemplos de código de la guía de migración .