Flutter - как правильно провести модульное тестирование FutureBuilder
Я пытаюсь выполнить модульное тестирование виджетов внутри, но не могу понять.
У меня есть виджет с
FutureBuilder
с построителем, который возвращает виджет, когда состояние соединения завершено:
body: FutureBuilder<void>(
future: _initializeControllerFuture,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
// If the Future is complete, display the preview.
return CameraPreview(_controller);
} else {
// Otherwise, display a loading indicator.
return const Center(child: CircularProgressIndicator());
}
},
),
Вот как я создавал будущее:
Future<void> _initializeControllerFuture;
@override
void initState() {
super.initState();
// To display the current output from the Camera,
// create a CameraController.
_controller = CameraController(
// Get a specific camera from the list of available cameras.
widget.camera,
// Define the resolution to use.
ResolutionPreset.medium,
);
// Next, initialize the controller. This returns a Future.
_initializeControllerFuture = _controller.initialize();
}
А вот и мой тест:
testWidgets('Camera preview is available',
(WidgetTester tester) async {
await _buildCameraScreenPage(tester);
await tester.pump();
expect(find.byType(CameraPreview), findsOneWidget,
reason: 'Camera preview should be visible.');
});
Я отладил это и
snapshot.connectionState
никогда не выполняется (всегда ждет), поэтому пропускает строку, которая возвращает
CameraPreview
. я пытался
tester.pumpAndSettle()
тоже, но время истекает.
Любые идеи?