微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter - 如何正确地对 FutureBuilder 进行单元测试

如何解决Flutter - 如何正确地对 FutureBuilder 进行单元测试

我正在尝试对 FutureBuilder 内的小部件进行单元测试,但我无法弄清楚。

我有一个小部件,它有一个 FutureBuilder一个构建器,当连接状态完成时,它返回一个 CameraPreview 小部件:

    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() 但它超时了。

有什么想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。