1

リアクティブ ユーティリティを作成しようとしていSharedPreferencesますが、この問題で立ち往生しています。これは私のクラスです

class SPUtil {
    final _workoutsStreamController = StreamController<
          Result<Iterable<PreferencesWorkout>, Exception>>.broadcast();

    @override
    Stream<Result<Iterable<PreferencesWorkout>, Exception>> getWorkouts() async* {
      final prefs = await SharedPreferences.getInstance();
      _workoutsStreamController.sink.add(success(_getStoredWorkouts(prefs)));
      yield* _workoutsStreamController.stream;
    }
}

そして、これは私のテストです

test("getWorkouts SHOULD return empty list WHEN nothing is stored",
        () async {
      SharedPreferences.setMockInitialValues({});

      final actual = await _sut.getWorkouts().first;

      expect((actual as Success).value, []);
    });

このテストを実行するたびに、30 秒間ループし、このエラーが返されます

dart:async  _startMicrotaskLoop

TimeoutException after 0:00:30.000000: Test timed out after 30 seconds. See https://pub.dev/packages/test#timeouts

代わりにこの実装を使用すると、すべて正常に動作します

class SPUtil {
    @override
    Stream<Result<Iterable<PreferencesWorkout>, Exception>> getWorkouts() async* {
      final prefs = await SharedPreferences.getInstance();
      yield success(_getStoredWorkouts(prefs));
    }
}

したがって、私のテストは正しいと思います。前もって感謝します。

4

1 に答える 1