我一直在尝试为我的 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 = '[email protected] /cdn-cgi/l/email-protection';
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] 未创建 Firebase 应用程序“[DEFAULT]” - 调用 Firebase.initializeApp()
你可以这样做:
setUpAll(() async {
await Firebase.initializeApp();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)