当前位置: 首页 > 知识库问答 >
问题:

Mockito http。在类型转换中,客户端类型“Null”不是类型“Future”的子类型

翟默
2023-03-14

我正在使用Mockito在Flutter应用程序中对http请求应用单元测试。

要测试的代码:

@GenerateMocks([http.Client])
void main() {
  late GdprDataSourceImpl dataSource;
  late MockClient mockHttpClient;

  setUp(() {
    mockHttpClient = MockClient();
    dataSource = GdprDataSourceImpl(
      httpClient: mockHttpClient,
      baseUrl: '',
    );
  });

  group('post Gdpr', () {
    const status = true;
    final url = Uri.parse('/gdpr/consent');

    const body = {
      'status': status,
    };

    final errorMessage = fixture('error_response.json');
    
    test('should perform a POST request to /auth/otp', () async {
      when(mockHttpClient.post(url, body: body)).thenAnswer(
        (_) async => http.Response('', 201),
      );

      await dataSource.postGdpr(status: status);

      verify(mockHttpClient.post(url, body: body));
    });
  });
}

我得到了以下错误:“Null”类型不是类型转换中“Future”类型的子类型

已经使用构建运行器成功生成了模拟

我还尝试更新模拟类并将返回值更改为

returnValue: Future<http.Response?>

我得到:键入“未来”

共有1个答案

艾照
2023-03-14

因此,解决方案是使用package:http提供的MockClient类,而不是使用mockito。

  group('post Gdpr success', () {
    Future<http.Response> requestHandler(http.Request request) async {
      final apiResponse = fixture('gdpr_response.json');
      return http.Response(apiResponse, 201);
    }

    setUp(() {
      mockHttpClient = MockClient(requestHandler);

      dataSource = GdprDataSourceImpl(
        httpClient: mockHttpClient,
        baseUrl: '',
      );
    });

    test('should perform a POST request to /gdpr/consent', () async {
      final result = await dataSource.postGdpr(status: status);
      expect(result, gdprResponse);
    });
  });
 类似资料:
  • 当我运行我的代码时,它返回了错误:类型“Future”不是类型转换中“List”类型的子类型。我该如何修复它?它是在我从Firebase获取数据之前匹配引擎运行的?我试图将wait添加到List demoProfiles=getdata()作为wait List;但它返回错误。我真的是新手,这个问题已经困扰了我一整天。请帮帮我

  • 我是个新手。当我运行代码时,我得到一个错误:“Future”类型不是“List”类型的子类型。如果我改变屏幕,我将得到错误:NoSuchMethodError:方法“map”被调用为null。我怎样才能解决它?谢谢你帮助我。

  • 我是新手。我正在开发一个测验应用程序,并拥有以下三个dart文件: 主要的飞奔 question.dart answer.dart 当我在android studio中的android上运行应用程序时,出现以下错误: ══╡ 小部件库捕获的异常╞═══════════════════════════════════════════ 生成MyApp时引发了以下类型的错误(脏,状态:_MyAppSta

  • 我试图将build_value和json_serializable结合起来,解析从服务器到模型类的json响应。 以下是依赖项: 下面是我编写的代码 序列化器类代码: 以下是我从服务器得到的响应。 最后,我尝试使用以下代码行进行解析 但是我得到以下错误 请说明可能导致此问题的原因。

  • 我对flatter是个新手,我想呈现一个ListView。但是我犯了一个错误。 我有3个模型课: 主题、主题和内容。 这是模型文件: 这是文件: 问题出现在。 错误消息是:

  • 我试图在Dart中反序列化一个非常复杂的JSON,但是我不知道出了什么问题。 当它尝试反序列化时,它向我显示了以下错误:“type'\u InternalLinkedHashMap” 有人知道发生了什么事吗? 这是我的密码: