【问题标题】:Flutter Bloc test "bloc.add" null safety issueFlutter Bloc 测试“bloc.add”空安全问题
【发布时间】:2021-08-13 08:04:59
【问题描述】:

我有一个flutter bloc_test,由于最近Flutter 升级涉及空安全性而失败。

我有以下代码

blocTest('get the usecase name',
        build: () {
          when(() => mockGetUseCaseName(any()))
              .thenAnswer((_) async => Right(name));
          return bloc;
        },
        act: (bloc) => bloc.add(GetUseCaseName(name)),
        verify: (_) => verify(
            () => mockGetUseCaseName(Params(string: name))));

我在“bloc.add”行得到错误

“'add'方法不能被无条件调用,因为receiver可以是'null'”

有什么想法吗?

【问题讨论】:

    标签: flutter bloc bloc-test


    【解决方案1】:

    我找到了答案——对于其他有同样问题的人。我通过强制转换 bloc 类型来修复它(因为 act/bloc 是 Object? 类型)

    act: (bloc) => cast<UseCaseBloc>(bloc).add(GetUseCaseName(name))
    

    祝你有美好的一天。

    起亚卡哈,

    迈克·史密斯

    【讨论】:

      【解决方案2】:

      最正确的解决方案是明确数据类型

      之前:

      blocTest('get the usecase name',
          build: () {
            when(() => mockGetUseCaseName(any()))
                .thenAnswer((_) async => Right(name));
            return bloc;
          },
          act: (bloc) => bloc.add(GetUseCaseName(name)),
          verify: (_) => verify(
              () => mockGetUseCaseName(Params(string: name))));
      

      之后:

      blocTest<ClassBloc, ClassState>('get the usecase name',
          build: () {
            when(() => mockGetUseCaseName(any()))
                .thenAnswer((_) async => Right(name));
            return bloc;
          },
          act: (bloc) => bloc.add(GetUseCaseName(name)),
          verify: (_) => verify(
              () => mockGetUseCaseName(Params(string: name))));
      

      【讨论】:

        猜你喜欢
        • 2020-09-28
        • 2021-08-15
        • 2023-02-17
        • 2021-08-30
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 2021-03-31
        • 2021-09-20
        相关资源
        最近更新 更多