【问题标题】:How to test a Flutter application using Firebase?如何使用 Firebase 测试 Flutter 应用程序?
【发布时间】: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 应用。

【问题讨论】:

标签: firebase flutter unit-testing testing google-cloud-firestore


【解决方案1】:

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

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

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

...

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

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

【讨论】:

    猜你喜欢
    • 2019-07-13
    • 2020-02-28
    • 1970-01-01
    • 2020-06-21
    • 2019-09-07
    • 2021-03-26
    • 2019-04-29
    • 2020-04-10
    • 2020-02-08
    相关资源
    最近更新 更多