代码之家  ›  专栏  ›  技术社区  ›  Muldec

用颤振测试挂起设置Firestore仿真器

  •  0
  • Muldec  · 技术社区  · 4 年前

    我正在尝试使用Firestore模拟器编写单元测试。

    我用以下命令启动了模拟器:

    firebase emulators:start --only firestore
    

      testWidgets('should retrieve correct item', (tester) async {
        await Firestore.instance.settings(
          host: "127.0.0.1:8080",
          sslEnabled: false,
          persistenceEnabled: false,
        );
    
        var ref = await Firestore.instance
          .collection('books')
          .add({ 'title': 'title'});
    
        // Fetch item by id
        var resp = await Firestore.instance
          .collection('books')
          .document(ref.documentID)
          .get();
    
        expect(resp, isNotNull);
    
      });
    

    问题是代码挂在 .settings() 方法,绝不继续下一步。

    有趣的是,当我停止仿真器时,测试的行为是相同的,并挂起在 .add() 方法,让我怀疑我的方法是否正确。

    0 回复  |  直到 4 年前
        1
  •  2
  •   Muldec    4 年前

    你应该看看 Dependency Injection ,那不是测试东西的正确方法。可能测试挂起,因为它无法在该地址与Firebase通信。

    每次你有一段代码很难测试,或者因为它很慢或者需要网络访问(api,数据库等),你应该 mock

    Mockito provider 包装。

    Firebase.instance