firebase - 使用 Mockito 为 Firebase 用户身份验证设置单元测试

我一直在尝试为我的 Firebase 用户身份验证类设置单元测试。我试过像许多教程所示那样做,但是由于 firebase 核心插件已经更新,他们已经改变了您必须设置环境的方式。我一直无法弄清楚如何使用 Mocks 调用 Firebase.initializeApp() 方法。插件提供的文档也没有透露任何解决方案。到目前为止,有人解决了这个问题吗?

class MockFirebaseAuth extends Mock implements fireAuth.FirebaseAuth {}

class MockFirebaseUser extends Mock implements fireAuth.User {}

class MockAuthResult extends Mock implements fireAuth.UserCredential {}

void main() async {
  TestWidgetsFlutterBinding.ensureInitialized();
  MockFirebaseAuth _auth = MockFirebaseAuth();
  BehaviorSubject<MockFirebaseUser> _user = BehaviorSubject<MockFirebaseUser>();
  when(_auth.authStateChanges()).thenAnswer((_) {
    return _user;
  });
  User user = User.instance(auth: _auth);

  group('User Model Test', () {
    String email = 'test@email.com';
    String password = '123456';

    when(_auth.signInWithEmailAndPassword(email: email, password: password)).thenAnswer((_) async {
      _user.add(MockFirebaseUser());
      return MockAuthResult();
    });
    test('sign in with email and password', () async {
      bool signedIn = await user.signIn(email, password);
      expect(signedIn, true);
      expect(user.status, Status.Authenticated);
    });
    test('sign out', () async {});
  });
}

抛出的错误:

[core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()

最佳答案

你可以这样做:

 setUpAll(() async {
   
    await Firebase.initializeApp();

  });

https://stackoverflow.com/questions/64476408/

相关文章:

reactjs - React craco tailwind postcss 集成

javascript - Windows Localhost 中的 Wiki.js 安装

node.js - AWS sdk 使用 sso 获取凭证

python-3.x - 一个FITS文件的坐标转换问题

matlab - 由凸包创建的曲面上点值的插值

java - 修改 tomcat 上静态 Assets 的 header cookie 并使用 ap

java - 微服务之间的通信和使用 REST 的内聚

reactjs - Stripe 参数_invalid_integer

html - 输入类型 "email"在:focus state时变为 "text"

authentication - Telegram 登录小部件因禁用跨站点 cookie 而损坏