1

我有两个测试,在单击按钮后,我想测试 CircularProgressIndicator 是否会出现在按钮上。问题是在点击和之后tester.pump(),它找不到导致测试失败的 CircularProgressIndicator,我尝试了pumpAndSettle()并添加了一个Duration(seconds:x)但得到了同样的错误

这很奇怪,因为在我将 Flutter sdk 更新到 1.22.0、升级我的 flutterFire 包并迁移到使用 Android embbeding V2 之前测试都还可以。

testWidgets("Should show loading button when click on request button ",
        (WidgetTester tester) async {
      await tester.pumpWidget(
        _buildWidget(
          home: FinancialDialogBill(
            paymentId: "fakePaymentId",
            additionalValueType: AdditionalValueType.fee,
            billValues: billValues,
            installmentList: installments,
          ),
        ),
      );

      expect(find.byKey(financialDialogBillRequestButton), findsOneWidget);
      expect(find.byKey(financialDialogBillRequestButtonLoading), findsNothing);

      await tester.tap(find.byKey(financialDialogBillRequestButton));

      await tester.pump();

      expect(
          find.byKey(financialDialogBillRequestButtonLoading), findsOneWidget);
      expect(find.byKey(financialDialogBillRequestButton), findsNothing);

    });
  });

4

1 回答 1

0

有点晚了,但我也遇到了这个问题,我发现最短的解决方法只是尝试/捕获超时错误......

try {
  await tester.pumpAndSettle();
} catch (err) {}

expect(find.byKey(financialDialogBillRequestButtonLoading), findsOneWidget);
expect(find.byKey(financialDialogBillRequestButton), findsNothing);

如果它可以在找到更好的解决方案之前帮助某人,我们会很高兴。

于 2021-03-22T18:54:12.533 回答