迁移空安全后颤振模拟单元测试错误

Posted

技术标签:

【中文标题】迁移空安全后颤振模拟单元测试错误【英文标题】:Flutter mockito unit test error after migrate null-safety 【发布时间】:2021-08-07 22:21:37 【问题描述】:

Null* 获取任何 包:mockito/src/mock.dart

匹配在“this”位置传递的任何参数的参数匹配器。

参数类型“Null*”不能分配给参数类型“Params”.dart(argument_type_not_assignable)

  test('should start listening when StartListening is called', () async 
final tStreamListHazardEntity =
    Stream<List<HazardEntity>>.fromIterable([tListHazardEntity]);

// arrange
when(mockHazardListen!.call(any))
    .thenAnswer((_) async => Right(tStreamListHazardEntity));
// assert
expectLater(
    bloc,
    emitsInOrder([
      isA<HazardMasterInitial>(),
      isA<Loading>(),
      isA<UpdateState>()
    ]));

// act
bloc!.add(StartListening());
await untilCalled(mockHazardListen!.call(any));

// assert
verify(mockHazardListen!.call(any)); );

【问题讨论】:

【参考方案1】:

我找到了解决方案,使用过的 mockito 可以在 flutter null-safety migration 之后创建 mock,而无需手动创建 mock。

受 mockito 启发的 Dart 模拟库。

Mocktail 专注于提供一个熟悉的、简单的 API,用于在 Dart 中创建模拟(具有 null 安全性),而无需手动模拟或代码生成。

【讨论】:

以上是关于迁移空安全后颤振模拟单元测试错误的主要内容,如果未能解决你的问题,请参考以下文章

颤振从单元\小部件测试调用http请求而不进行模拟

springboot2.0入门----mock模拟测试+单元测试

如何在 Flutter 中为用户输入验证和 maxLength 创建一个简单的单元测试,并且具有空安全性

Laravel 单元测试迁移失败

在颤振单元测试中访问 rootBundle

在使用 spring-session 的单元测试中,身份验证不应为空