在颤振测试中模拟 firebase user.reload()

时间:2021-07-16 15:24:05

标签: flutter google-cloud-firestore firebase-authentication mocking

我正在尝试使用模拟用户模拟 firestore 调用。 使用 https://pub.dev/packages/fake_cloud_firestorehttps://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() 或忽略它?

1 个答案:

答案 0 :(得分:0)

我联系了 https://pub.dev/packages/firebase_auth_mocks 的开发者,他实现了 reload() 方法。

现在一切正常