Рецепты

Детерминированное время политик

Тестируйте Debounce, Throttle, Rate Limit и временные метки без реальных задержек.

v0.1.0-dev.1Средний уровеньusecase_forge_test

Детерминированное время политик

Передайте в UseCase TestUseCaseClock, чтобы не ждать реальные таймеры.

dart
final clock = TestUseCaseClock(DateTime.utc(2030));
final useCase = SearchUseCase(clock: clock);
final observer = UseCaseTestObserver<SearchState>(useCase);

useCase.add(const SearchCommand('dart'));
clock.advance(const Duration(milliseconds: 300));
await observer.waitForHistory(hasLength(1));

Передайте часы в конструктор основного пакета через super(initialState: ..., clock: clock). Метод advance запускает наступившие обратные вызовы политик и управляет временными метками Execution Entry. Тест явно называет пересекаемую границу и не зависит от планировщика или скорости машины.

Закройте UseCase и отмените наблюдатель в завершающей части теста. Продвижение времени само по себе не доказывает завершение Execution — дождитесь наблюдаемого условия сценария.

ARKTELOS

Инженерные системы для программного обеспечения, которое обязано выдерживать нагрузку.