Flutter Firebase单元测试

iovurdzv  于 2023-08-07  发布在  Flutter
关注(0)|答案(1)|浏览(160)

我有一个项目,我有一个负载的类,用于操作数据内Firestore。举例来说:

  1. class ExampleClass{
  2. final FirebaseFirestore _firestore = FirebaseFirestore.instance;
  3. createObject(){/*...*/}
  4. editObject(){/*...*/}
  5. deleteObject(){/*...*/}
  6. /* With more functions for specific data manipulation */
  7. }

字符串
我正在努力寻找一种简单的方法来运行这些类的测试。到目前为止,我已经运行了一个本地Firebase模拟器,其中包含一些虚拟测试数据,但是要连接到该模拟器,我必须运行集成测试而不是单元测试。
我不介意运行本地模拟器,但是集成测试需要很长时间才能执行,而且感觉不像是正确的做事方式,因为我没有测试任何UI方面的东西,只是逻辑。
有没有更好的方法来快速运行类的单元测试,比如我的例子,它使用本地Firestore模拟器?
我相信我本质上是在问,是否可以连接到本地Firestore模拟器进行单元测试?

gijlo24d

gijlo24d1#

我认为你根本不需要Firebase模拟器来测试这样的类。相反,我建议以这样的方式重构你的类:

  1. class ExampleClass {
  2. final FirebaseFirestore _firestore;
  3. ExampleClass({required FirebaseFirestore store}) : _firestore = store;
  4. createObject() {/*...*/}
  5. editObject() {/*...*/}
  6. deleteObject() {/*...*/}

字符串
}
然后,使用mockitomocktail(或任何其他模拟库,如果存在),你可以轻松地模拟FirebaseFirerestore示例,并传递给UnitTest中的构造函数,每次调用该方法,例如createObject(),你可以验证FirebaseFirerestore的相应方法是否被调用:

  1. verify(firestoreMock.invokeSomeMethod());

展开查看全部

相关问题