Aur*_*May 5 testing unit-testing firebase flutter google-cloud-firestore
我使用 Flutter 和 Firebase 作为我的数据库。我想对我的应用程序进行一些单元测试,但是当我开始此测试时:
testWidgets('MyWidget has a title and message', (WidgetTester tester) async {
// Create the widget by telling the tester to build it.
await tester.pumpWidget(LoginPage());
expect(true, true);
});
Run Code Online (Sandbox Code Playgroud)
我有一个例外:
尚未创建 Firebase 应用程序“[DEFAULT]” - 调用 Firebase.initializeApp()
但是 Firebase.initializeApp() 在我的 main.dart 中被调用:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
Run Code Online (Sandbox Code Playgroud)
而且我不知道如何在测试中初始化 Firebase 应用程序。
将其发布为社区 wiki,因为它基于 @GuilhermeGabanelli 的评论。
如果您查看有关如何使用 Firebase 服务执行单元测试的flutterfire 文档,您将看到:
Firebase 库需要在实际设备或模拟器上运行。因此,如果您想运行单元测试,则必须使用 Fakes。Fake 是一个实现给定 Firebase 库的 API 并模拟其行为的库。
...
初始化应用程序时,您不是传递 Firebase 库的实际实例(例如,如果使用 Firestore,则为 FirebaseFirestore.instance),而是传递一个假实例(例如 FakeFirebaseFirestore())。然后应用程序的其余部分将像与 Firebase 对话一样运行。
接下来是带有示例代码的示例。我相信这是您面临问题的原因,如果您更改代码以使用 Fakes,则应该可以解决此问题。
| 归档时间: |
|
| 查看次数: |
4628 次 |
| 最近记录: |