首页 > 解决方案 > Mockito - 在空安全迁移后存根方法

问题描述

在 null 安全性之前,我可以像这样简单地模拟sendRequest(...)方法:

 void stubBaseRepositorySendRequestResponse(String response) {
    when(baseRepository.sendRequest(onGetData: anyNamed('onGetData')))
        .thenAnswer((_) {
      return Future<String>.value(response);
    });
  }

该方法的签名是:

Future<T> sendRequest<T>({required Future<T> Function() onGetData})

如何使用新的 null 安全版本的 mockito 来做到这一点?我还能保持这个存根的通用特性并允许传入任何参数吗?

标签: dartmockitoflutter-testdart-null-safety

解决方案


这可以使用mocktail轻松完成。更容易,没有 mockito 所需的代码生成。

首先导入无酒精鸡尾酒很重要:

import 'package:mocktail/mocktail.dart';

然后创建我们要模拟的类的模拟:

class MockBaseRepository extends Mock implements BaseRepository {}

void stubBaseRepositorySendRequestResponse(String response) {
when(() => baseRepository.sendRequest(
        onGetData: any(named: 'onGetData', that: isNotNull))).thenAnswer((_) {
      return Future<String>.value(response);
    });
  }

推荐阅读