Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Mockito设置Firebase用户身份验证的单元测试_Firebase_Flutter_Dart_Mockito_Flutter Test - Fatal编程技术网

使用Mockito设置Firebase用户身份验证的单元测试

使用Mockito设置Firebase用户身份验证的单元测试,firebase,flutter,dart,mockito,flutter-test,Firebase,Flutter,Dart,Mockito,Flutter Test,我一直在尝试为我的Firebase用户身份验证类设置单元测试。我已经尝试过像许多教程所展示的那样去做,但是由于firebase核心插件有了更新,它们已经改变了您必须设置环境的方式。我还没有弄清楚如何使用mock调用Firebase.initializeApp()方法。插件提供的文档也没有透露任何解决方案。到目前为止有人解决了这个问题吗 class MockFirebaseAuth extends Mock implements fireAuth.FirebaseAuth {} class Mo

我一直在尝试为我的Firebase用户身份验证类设置单元测试。我已经尝试过像许多教程所展示的那样去做,但是由于firebase核心插件有了更新,它们已经改变了您必须设置环境的方式。我还没有弄清楚如何使用mock调用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 {});
  });
}
类MockFirebaseAuth扩展Mock实现fireAuth.FirebaseAuth{}
类MockFirebaseUser扩展Mock实现fireAuth.User{}
类MockAuthResult扩展了Mock实现fireAuth.UserCredential{}
void main()异步{
TestWidgetsFlutterBinding.ensureInitialized();
MockFirebaseAuth_auth=MockFirebaseAuth();
行为主体_user=BehaviorSubject();
当(_auth.authStateChanges())时。然后回答{
返回用户;
});
User=User.instance(auth:_auth);
组('用户模型测试',(){
字符串电子邮件test@email.com';
字符串密码='123456';
当(_auth.signin with email and password(email:email,password:password))。然后回答(_)异步{
_添加(MockFirebaseUser());
返回MockAuthResult();
});
测试('使用电子邮件和密码登录',()异步{
bool signedIn=等待用户.signIn(电子邮件、密码);
期望(签名,真);
expect(user.status、status.Authenticated);
});
测试('注销',()异步{});
});
}
抛出错误:

[核心/无应用程序]未创建Firebase应用程序“[默认]”-调用Firebase.initializeApp()


您可以这样做:

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

  });