Инструменты
Код Visual Studio, версия: 1.107.0
Mac OS, M4
Справочная информация
- Существует функция Azure, мы можете назвать его abc.MyFunctionApp. Это папка за пределами тестовой папки, то есть реальная реализация, которая запускает функции Azure.
- Внутри тестовой папки есть две папки: abc.tests и abc.aspire.tests.apphost
- Внутри csproj для проекта aspire apphost, я ссылаюсь на свой abc.MyFunctionApp
У меня есть интеграционный тест, который должен использовать Aspire для запуска функции Azure в abc.MyFunctionApp. Странная проблема заключается в том, что при запуске теста в режиме отладки он работает нормально, но при запуске в обычном тестовом режиме функция никогда не запускается, и тест истекает по тайм-ауту.
Проверил на Mac и ПК, та же проблема.
Некоторые коды для иллюстрации
Aspire apphost (Program.cs)
Код: Выделить всё
var builder = DistributedApplication.CreateBuilder(args);
builder
.AddAzureFunctionsProject("my-function-app")
.WithExternalHttpEndpoints();
builder.Build().Run();
Код: Выделить всё
public async ValueTask InitializeAsync()
{
var appHost = await DistributedApplicationTestingBuilder
.CreateAsync
();
App = await appHost.BuildAsync();
await App.StartAsync(); // doesn't launch azure function
await Task.Delay(TimeSpan.FromSeconds(30));
HttpClient = App.CreateHttpClient("my-function-app");
HttpClient.Timeout = TimeSpan.FromSeconds(30);
...
}
[Fact]
public async Task MyFunctionApp_ReturnsResponse()
{
// Arrange
var request = new
{
Email = "test@example.com"
};
// Act
try
{
response = await _fixture.HttpClient!.PostAsJsonAsync("/api/endpoint", request, TestContext.Current.CancellationToken); // not working since function is not launched
}
catch (Exception ex)
{
// ...
}
// Assert
...
}
Код: Выделить всё
Exe
net10.0
enable
enable
true
Код: Выделить всё
net10.0
enable
enable
false
true
runtime; build; native; contentfiles; analyzers; buildtransitive
all
Код: Выделить всё
net8.0
v4
enable
enable
Exe
Я могу это проверить, выполнив следующую команду, чтобы увидеть, какие процессы выполняются в фоновом режиме:
Код: Выделить всё
lsof -i TCP | grep LISTENЕсли я перейду непосредственно к моему abc.MyFunctionApp и запущу «func start» с терминала, функция Azure запустится без проблем.
Кто-нибудь еще сталкивался с этой проблемой раньше? Буду признателен за ваш отзыв, спасибо!
Подробнее здесь: https://stackoverflow.com/questions/798 ... -test-mode
Мобильная версия