У меня есть автозагрузка cs, где я регистрирую AuthenticationMiddleware следующим образом:
public class Startup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
AddAuthentication(app);
app.UseMvcWithDefaultRoute();
app.UseStaticFiles();
}
protected virtual void AddAuthentication(IApplicationBuilder app)
{
app.UseAuthentication();
}
}
и я проверяю это с помощью:
WebApplicationFactory<Startup>().CreateClient();
Вопрос:
Я хотел бы заменить app.UseAuthentication();
на app.UseMiddleware<TestingAuthenticationMiddleware>()
,
Что я пробовал:
Я думал о наследовании от автозагрузки в моем тестовом проекте:
public class TestStartup : Startup
{
protected override void AddAuthentication(IApplicationBuilder app)
{
app.UseMiddleware<AuthenticatedTestRequestMiddleware>();
}
}
class TestWebApplicationFactory : WebApplicationFactory<Web.Startup>
{
protected override IWebHostBuilder CreateWebHostBuilder()
{
return WebHost.CreateDefaultBuilder()
.UseStartup<IntegrationTestProject.TestStartup>();
}
}
но это не работает, поскольку TestStartup находится в другой сборке, которая имеет множество побочных эффектов для WebHost.CreateDefaultBuilder()
Я получаю:
System.ArgumentException: корень содержимого
«C: \ Projects \ Liero \ myproject \ tests \ IntegrationTests» не существует.
Имя параметра: contentRootPath