我正在尝试对 a 内的小部件进行单元测试,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
从未完成(总是在等待),因此它跳过了返回 a 的行CameraPreview
。我也试过tester.pumpAndSettle()
了,但是超时了。
有任何想法吗?