如何使用 Firebase 测试 Flutter 应用程序?

Posted

技术标签:

【中文标题】如何使用 Firebase 测试 Flutter 应用程序?【英文标题】:How to test a Flutter application using Firebase? 【发布时间】:2021-06-28 13:15:58 【问题描述】:

我使用 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);
);

我有例外:

没有创建 Firebase 应用“[DEFAULT]” - 调用 Firebase.initializeApp()

但 Firebase.initializeApp() 在我的 main.dart 中被调用:

Future<void> main() async 
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());

而且我不知道如何在我的测试中初始化 Firebase 应用。

【问题讨论】:

检查 this flutterfire doc,它显示了如何模拟和测试 Firebase 服务 【参考方案1】:

根据@GuilhermeGabanelli 的评论将此作为社区 wiki 发布。

如果您查看this flutterfire documentation 了解如何使用 Firebase 服务执行单元测试,您会看到:

Firebase 库需要在实际设备或模拟器上运行。所以如果你想运行单元测试,你将不得不使用 Fakes。 Fake 是一个实现给定 Firebase 库的 API 并模拟其行为的库。

...

在初始化您的应用时,您不是传递 Firebase 库的实际实例(例如,如果使用 Firestore,则为 FirebaseFirestore.instance),而是传递一个假的实例(例如 FakeFirebaseFirestore())。然后您的应用程序的其余部分将像与 Firebase 对话一样运行。

后面是带有示例代码的示例。我相信这是您所面临问题的原因,如果您将代码更改为使用 Fakes,则应该解决此问题。

【讨论】:

以上是关于如何使用 Firebase 测试 Flutter 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章