Рецепты
Детерминированное время политик
Тестируйте 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 — дождитесь наблюдаемого условия сценария.