Flutter Bloc 测试 "bloc.add" null 安全问题
Flutter Bloc test "bloc.add" null safety issue
我有一个 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”行收到错误“=12=]
“无法无条件调用方法'add',因为接收者可以是'null'”
有什么想法吗?
我找到了答案 - 对于其他有同样问题的人。我通过转换 bloc 类型来修复它(因为 act/bloc 是 Object? 类型)
act: (bloc) => cast<UseCaseBloc>(bloc).add(GetUseCaseName(name))
祝你有美好的一天。
起亚卡哈,
迈克·史密斯
最正确的解决方案是明确数据类型
之前:
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))));
我有一个 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”行收到错误“=12=]
“无法无条件调用方法'add',因为接收者可以是'null'”
有什么想法吗?
我找到了答案 - 对于其他有同样问题的人。我通过转换 bloc 类型来修复它(因为 act/bloc 是 Object? 类型)
act: (bloc) => cast<UseCaseBloc>(bloc).add(GetUseCaseName(name))
祝你有美好的一天。
起亚卡哈,
迈克·史密斯
最正确的解决方案是明确数据类型
之前:
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))));