Почему Task.Delay(1) необходим для увеличения времени при модульном тестировании с помощью .NET TimeProvider?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему Task.Delay(1) необходим для увеличения времени при модульном тестировании с помощью .NET TimeProvider?

Сообщение Anonymous »

Я настроил конвейер на основе повторных попыток с помощью Polly.

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

// Using Polly for retry logic
private readonly ResiliencePipeline _retryPipeline = new ResiliencePipelineBuilder { TimeProvider = timeProvider }
.AddRetry(new RetryStrategyOptions
{
ShouldHandle = new PredicateBuilder().Handle(),
Delay = TimeSpan.FromMilliseconds(_backoffFactor),
MaxRetryAttempts = _maxAttempts - 1,

// Linear backoff increases the delay each time by the backoff factor
BackoffType = DelayBackoffType.Linear,
OnRetry = onRetryArguments =>
{
logger.LogWarning(
"Failed to acquire lock. Retrying. {@LogContext}",
new { onRetryArguments });
return ValueTask.CompletedTask;
}
})
.Build();
Что я выполняю с помощью

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

// Attempt to store the lock with backoff retry
LockResult result = await _retryPipeline.ExecuteAsync(
async _ => await AttemptLockStorageAsync(lockId, expiryMilliseconds, attempts++),
cancellationTokenSource.Token);
При модульном тестировании я обнаружил, что мне нужно добавить Task.Delay(1), чтобы Полли могла выполнить повторные попытки

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

// Act
Func func = async () =>
{
Task result = _distributedLockService.AcquireLockAsync(lockId);
for (int i = 1; i 

Подробнее здесь: [url]https://stackoverflow.com/questions/77876331/why-is-task-delay1-necessary-to-advance-clock-when-unit-testing-with-net-time[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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