问题描述
我正在尝试对 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 (将#修改为@)