如何解决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 举报,一经查实,本站将立刻删除。