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() тоже, но время истекает.

Любые идеи?

0 ответов

Другие вопросы по тегам