1

我有一个颤振 bloc_test 由于最近在颤振中涉及空安全性的升级而失败。

我有以下代码

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’不能被无条件调用,因为接收者可以是‘null’”

有任何想法吗?

4

2 回答 2

3

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

前:

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))));
于 2021-05-27T16:47:22.103 回答
1

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

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

祝你有美好的一天。

起亚卡哈,

迈克·史密斯

于 2021-05-25T04:40:05.657 回答