android - 如何对初始化 Firebase Core 的 Flutter 应用程序进行单元测试?
问题描述
我一直在尝试为一开始就初始化 Firebase Core 的 Flutter 应用程序编写单元测试。
我无法通过测试,因此我通过确保应用程序不会初始化并因此永久显示 CircularProgressIndicator 来简化测试。
但是,我什至无法通过该测试。请帮助我确定为什么测试没有发现加载微调器存在。我已经更改了我的主代码以启动并保持应用程序处于错误状态,从而显示加载微调器。我已经确认这在模拟器中有效。
void main() {
testWidgets('App smoke test', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(App());
// Verify that our Sign In page shows first and has content.
expect(
find.byWidget(CircularProgressIndicator()),
findsOneWidget,
);
});
}
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(App());
}
class App extends StatefulWidget {
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
// Set default `_initialized` and `_error` state to false
bool _initialized = false;
bool _error = true; //Start app in error state to always show Circular Progress Indicator.
// Define an async function to initialize FlutterFire
void initializeFlutterFire() async {
try {
// Wait for Firebase to initialize and set `_initialized` state to true
await Firebase.initializeApp();
setState(() {
// _initialized = true; Commented out to keep app in error state.
});
} catch (e) {
// Set `_error` state to true if Firebase initialization fails
setState(() {
// _error = true;
});
}
}
@override
void initState() {
initializeFlutterFire();
super.initState();
}
@override
Widget build(BuildContext context) {
// Show error message if initialization failed
if (_error) {
return Center(child: CircularProgressIndicator());
}
// Show a loader until FlutterFire is initialized
if (!_initialized) {
return Center(child: CircularProgressIndicator());
}
return MyFlutterApp();
}
}
解决方案
推荐阅读
- c# - 如何通过 Web 服务在 Unity 中显示图像?
- python-3.x - 如何将 tkinter 按钮放置在特定区域?
- javafx - 如何将事件处理程序与另一个方法调用连接起来?
- python-3.x - 如何检查 Python venv 在 Windows 中是否处于活动状态?
- python - 执行集成方法的最佳实践
- ios - 在顶点着色器中创建纹理并传递给片段以使用金属实现涂抹刷?
- c++ - 我的 esp32 打印奇怪的字符,但我什么都做
- reactjs - 如何从 React 向 Django REST Framework 发送文件?
- r - 从非方形 MATRIX 创建邻接矩阵
- reactjs - IE 11“预期:”使用 React Babel 7 Typescript