Flutter Bloc 测试“bloc.add”null 安全问题

Mik*_*ith 1 flutter bloc bloc-test

我有一个 flutter bloc_test,由于最近 Flutter 的升级涉及 null 安全性,该测试失败了。

我有以下代码

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))));
Run Code Online (Sandbox Code Playgroud)

我在“bloc.add”行上收到错误

“无法无条件调用方法‘add’,因为接收者可能为‘null’”

有任何想法吗?

fra*_*mes 6

最正确的解决方案是使数据类型显式化

前:

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))));
Run Code Online (Sandbox Code Playgroud)

后:

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))));
Run Code Online (Sandbox Code Playgroud)