【发布时间】:2026-01-19 15:55:01
【问题描述】:
我正在尝试测试一个包含 StreamBuilder 的小部件,但我无法返回数据。
小部件:
class HomeView extends StatelessWidget {
final EventServiceRepository eventService;
HomeView({this.eventService});
@override
Widget build(BuildContext context) {
return Scaffold(
body: StreamBuilder<List<Event>>(
stream: this.eventService.getEvents(dates: dates),
builder: (context, snapshot) {
if (!snapshot.hasData) return HomeLoading();
return EventsView(events: snapshot.data);
},
)
);
}
}
测试:
class MockedEventService extends Mock implements EventServiceRepository {}
class MockedEventStream extends Mock implements Stream<List<Event>> {}
testWidgets('Should find EventsView', (WidgetTester tester) async {
final mockedEventService = MockedEventService();
final mockedEventStream = MockedEventStream();
when(mockedEventService.getEvents(dates: ['1/1/2021']))
.thenAnswer((_) => mockedEventStream);
when(mockedEventStream); // return list of events?
await tester.pumpWidget(HomeView(eventService: mockedEventService));
expect(find.byType(EventsView), findsOneWidget);
});
我用mockedEventStream 尝试了一些东西,但它总是返回snapshot.hasData == false
【问题讨论】:
标签: flutter mockito stream-builder