我正在尝试使用模拟用户模拟 firestore 调用。 使用 https://pub.dev/packages/fake_cloud_firestore 和 https://pub.dev/packages/firebase_auth_mocks。
但我收到错误:
<块引用>NoSuchMethodError: 类“MockUser”没有带有匹配参数的实例方法“reload”。 接收器:'MockUser' 的实例 尝试调用:reload() 发现:reload() => Future
我的方法:
Future<String> getHistory(
FirebaseAuth firebaseAuth, FirebaseFirestore firestore) async {
String title = "";
var user = firebaseAuth.currentUser;
user.reload();
if (user != null) {
await firestore
.collection('users')
.doc(user.uid)
.collection('history')
.get()
.then((QuerySnapshot querySnapshot) {
if (querySnapshot.docs.isNotEmpty) {
title = querySnapshot.docs.single.get('title');
}
}).catchError((error) => print(error));
}
return title;
}
和测试:
test("history", () async {
final mockFirestore = FakeFirebaseFirestore();
HistoryFirebase historyFirebase;
String historyTitle="";
final user = MockUser(
isAnonymous: false,
uid: 'someuid',
email: 'bob@somedomain.com',
displayName: 'Bob',
);
var mockFirebaseAuth = MockFirebaseAuth(mockUser: user, signedIn: true);
await instance.collection('users').doc('someuid').collection('history').add({
'title': "Title num.1",
})
await historyFirebase.getHistory(mockFirebaseAuth, mockFirestore).then((value) => historyTitle=value);
expect(historyTitle, "Title num.1");
});
有没有办法模拟 user.reload() 或忽略它?