【问题标题】:Unit Testing firebase_auth and firestore单元测试 firebase_auth 和 firestore
【发布时间】:2021-10-15 02:12:24
【问题描述】:

我正在尝试设置 Flutter 脚本来测试与我的 Firestore 数据库交互的类。

我目前的挣扎是:

  • 看来,为了使用 firebase_auth,我必须有一个小部件树。我对flutter和firebase都很陌生需要小部件树意味着我无法独立于 GUI 测试授权逻辑(例如,如果我在代码中调用 signOut 两次,即使 GUI 逻辑只允许您按一次按钮,会发生什么?)。
  • 模拟不足。为了模拟,您需要知道测试具有代表性的预期行为。我花了很多时间尝试解决期货问题、更改登录状态和不正确的数据格式。如果我编写了 mock,它们将无法匹配真实函数的实际行为。
  • 模拟对我没有帮助,因为我还在学习数据库的安全规则。我的代码确实适用于宽松的安全规则,但当前的安全规则有问题。

有没有什么方法可以在不模拟的情况下为 firebase_auth 或 firestore 编写单元/集成测试?如果可以的话,我什至很乐意使用本地模拟器/数据库导出。

以下是我查看过的一些不是我想要的文章:

【问题讨论】:

  • 到目前为止运气好吗?

标签: firebase flutter unit-testing firebase-authentication flutter-test


【解决方案1】:

根据这个Github issue,无法运行单元测试,因为需要本地 API 调用。

集成测试应该是可能的but the page from the Github Issue实际上并没有给出如何运行集成测试的示例。

好吧,我想我找到了我要找的东西。 firebase 团队非常出色地展示了如何在 Unit testing security rules with the Firebase Emulator Suite 中测试安全规则。

我所做的是在我的实际 Flutter 项目目录中运行 firebase init,这篇文章 Use the Firestore Emulator with Flutter 展示了如何在 Flutter 中直接访问模拟器,however the command to initialize is now

FirebaseFirestore.instance.useFirestoreEmulator('localhost', 8080);


结合这些,我认为应该可以测试一个人是否正在以正确的格式将正确的数据写入数据库,同时确保返回的数据符合预期,无论您是否使用 Freezed、Json Serializable ,飞镖:转换等...

【讨论】:

猜你喜欢
  • 2020-03-01
  • 2019-06-29
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多