で AAA に沿って書ける。 Arrange 準備 テスト対象と周辺を 組み立てる。 Stub・初期状態の設定。 blocTest<HogeBloc, HogeState>( '...', setUp: () { when(() => repo.fetchHoges()) .thenAnswer((_) async => hoges); }, build: () => HogeBloc(repository: repo), seed: () => const HogeState(status: HogeStatus.loading), // ... ); Act 実行 検証したい操作を 1つ実行。 Event を add するだけ。 blocTest<HogeBloc, HogeState>( '...', // ... act: (bloc) => bloc.add(HogeFugaPressed()), // ... ); Assert 検証 State 遷移と副作用を 検証。 順序も含めて検査できる。 blocTest<HogeBloc, HogeState>( '...', // ... expect: () => [ isA<HogeState>() .having((s) => s.status, 'status', HogeStatus.loadi isA<HogeState>() .having((s) => s.status, 'status', HogeStatus.succe ], verify: (_) { // 副作用検証 (mock の呼ばれ回数など) }, );