首页 > 解决方案 > Flutter 中的单元测试 firebase 抛出异常“没有创建 Firebase App '[DEFAULT]' - call Firebase.initializeApp()”

问题描述

我需要对使用 firebase 的应用程序进行单元测试。我的单元测试总是说“未处理的异常:[core/no-app] 没有创建 Firebase App '[DEFAULT]' - 调用 Firebase.initializeApp()”。我完全理解为什么会出现这个问题。但我仍然想在没有真正启动 firebase 的情况下对我的方法进行单元测试。即使嘲笑火力基地的东西也无济于事。希望你能帮助我吗?我有什么误解?

例如,我重写了本教程中的代码:https ://www.youtube.com/watch?v=4d6hEaUVvuU

这是我的测试类:(YT 示例中的“Auth”类在我的代码中是“Authentification”)

import 'package:firebase_auth/firebase_auth.dart';
import 'package:hrw_textscanner/firebase/Authentification.dart';
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';

class MockUser extends Mock implements User {}

final MockUser _mockUser = MockUser();

class MockFirebaseAuth extends Mock implements FirebaseAuth {
  @override
  Stream<User> authStateChanges() {
    return Stream.fromIterable([
      _mockUser,
    ]);
  }
}

void main() {
  final MockFirebaseAuth mockFirebaseAuth = new MockFirebaseAuth();
  final Authentification authentification =
      new Authentification(mockFirebaseAuth);

  test("emit occurs", () async {
    expectLater(authentification.authStateChanges, emitsInOrder([_mockUser])); //authStateChanges is the same as "user" in example
  });
}

在 Youtube 的示例中它可以工作 - 我的代码仍然导致上述错误:(

标签: firebaseflutterunit-testingtestingmocking

解决方案


推荐阅读