小编Mar*_*man的帖子

带有 flutter_bloc 的 Flutter testWidgets - 测试仅在一起执行时失败

我在 flutter 中遇到了附加的小部件测试问题。当我单独运行测试时,每个测试都成功了;但是,当我运行整个 main() 方法时,前三个测试成功,但后两个测试失败,并出现以下异常:

Expected: exactly one matching node in the widget tree
  Actual: ?:<zero widgets with type "SuccessDialog" (ignoring offstage widgets)>
Run Code Online (Sandbox Code Playgroud)

我知道异常意味着我期望的小部件不存在 - 我不明白为什么测试在单独运行时成功但在其他测试后运行后失败。每次测试后是否需要“重置”某些实例?

我试过插入“final SemanticsHandle handle = tester.ensureSemantics();” 在每个测试和“handle.dispose();”开始时 在每次测试结束时,但得到相同的结果。

编辑: 经过进一步调查后,问题似乎出在我如何使用flutter_bloc包管理 bloc 实例上。我已经改变了我的测试,为每个测试创建一个新的 testWidget 实例,但我仍然遇到同样的问题。有什么我可能会遗漏的东西会导致 bloc 实例在 testWidget 对象中持续存在吗?

我的新测试代码如下所示:

main() {
  MvnoMockClient.init();

  testWidgets(
      'Voucher Redemption: Tapping redeem when no values were entered yields 2 field errors',
      (WidgetTester tester) async {
    Widget testWidget = MediaQuery(
      data: MediaQueryData(),
      child: MaterialApp(
        home: VoucherRedemptionPage(onSuccess: () {}, onFail: …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-test

6
推荐指数
1
解决办法
3104
查看次数

标签 统计

flutter ×1

flutter-test ×1