Привет!
Я пишу потребительские тесты, используя структуру 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#
Место общения программистов C#
1729609608
Anonymous
Привет!
Я пишу потребительские тесты, используя структуру 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");
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79114738/net-integration-testing-with-middleware-pact[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия