Функция Azure не запускается Aspire при выполнении теста в обычном тестовом режимеC#

Место общения программистов C#
Ответить
Anonymous
 Функция Azure не запускается Aspire при выполнении теста в обычном тестовом режиме

Сообщение Anonymous »

У меня возникла странная проблема: мне нужно ввести некоторые данные при запуске теста в обычном тестовом режиме (не отладке).
Инструменты

Код 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();
Тестовый файл (mytest.cs)

Код: Выделить всё

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
...
}
csproj — abc.aspire.tests.apphost

Код: Выделить всё





Exe
net10.0
enable
enable
true













csproj — abc.tests

Код: Выделить всё



net10.0
enable
enable
false
true







runtime; build; native; contentfiles; analyzers; buildtransitive
all




















csproj — MyFunctionApp

Код: Выделить всё


net8.0
v4
enable
enable
Exe












Надеюсь, информации будет достаточно. Итак, при запуске теста в режиме отладки все работает нормально, но при запуске в обычном тестовом режиме (как через VS, так и через тест dotnet) ни одна функция Azure не запускается. Даже если я переключу режим сна на долгое время, ничего не появится.

Я могу это проверить, выполнив следующую команду, чтобы увидеть, какие процессы выполняются в фоновом режиме:

Код: Выделить всё

lsof -i TCP | grep LISTEN
При работе в режиме отладки вы можете увидеть запустившуюся строку с названием «func». Но при работе в тестовом режиме не отображается ни одна строка, связанная с «функцией». Я думаю, это индикатор того, что моя функция Azure никогда не запускается.

Если я перейду непосредственно к моему abc.MyFunctionApp и запущу «func start» с терминала, функция Azure запустится без проблем.
Кто-нибудь еще сталкивался с этой проблемой раньше? Буду признателен за ваш отзыв, спасибо!

Подробнее здесь: https://stackoverflow.com/questions/798 ... -test-mode
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»