Привет!
Я пишу потребительские тесты, используя структуру PACT. И я пытаюсь запустить фабрику WebApplication. У меня есть следующие настройки. А в случае, когда я использую промежуточное ПО, все конечные точки возвращают 404. Знаете почему? Я регистрирую неправильное промежуточное программное обеспечение? Большое спасибо
Это действительно то, как я это называю. Конечная точка — это дамп, она просто возвращает данные. Это работает без добавления промежуточного программного обеспечения. Но верно и то, что я не могу настраивать службы. Мне приходится запускать фабрику таким образом из-за PACT, которому необходимо, чтобы приложение работало по TCP.
Factory
public class CustomWebApplicationFactory : WebApplicationFactory
{
private IHost? _host;
public string ServerAddress
{
get
{
EnsureServer();
return ClientOptions.BaseAddress.ToString();
}
}
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.Configure(app =>
{
app.Use(async (context, next) =>
{
Console.WriteLine("Custom middleware executed before next middleware.");
await next.Invoke();
Console.WriteLine("Custom middleware executed after next middleware.");
});
});
}
protected override IHost CreateHost(IHostBuilder builder)
{
var testHost = builder.Build();
builder.ConfigureWebHost(webHostBuilder =>
{
webHostBuilder.UseKestrel();
});
_host = builder.Build();
_host.Start();
var server = _host.Services.GetRequiredService();
var addresses = server.Features.Get();
ClientOptions.BaseAddress = addresses!.Addresses
.Select(x => new Uri(x))
.Last();
testHost.Start();
return testHost;
}
protected override void Dispose(bool disposing)
{
_host?.Dispose();
}
private void EnsureServer()
{
if (_host is null)
{
using var _ = CreateDefaultClient();
}
}
}
Тест:
public class ProductTest : IClassFixture
{
private readonly ITestOutputHelper _output;
private readonly string _serverAddress;
private readonly HttpClient? _trop;
private readonly ITestService _testService;
public ProductTest(ITestOutputHelper output, CustomWebApplicationFactory fixture)
{
_output = output;
_serverAddress = fixture.ServerAddress;
_trop = fixture.CreateClient();
}
[Fact]
public async Task EnsureProviderApiHonoursPactWithConsumer()
{
var lorto = await _trop.GetAsync($"/api/products");
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... eware-pact
.NET — интеграционное тестирование с промежуточным программным обеспечением (PACT) ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Связь между промежуточным программным обеспечением авторизации и ядром фильтра Asp.net
Anonymous » » в форуме C# - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-